2011-02-16 3 views
0

%s을 사용하여 목록 이름을 변경하는 방법이 있습니까? 다음은 예입니다 :% s를 사용하여 목록 이름 변경

dict1[key]=value 

for x in dict1.keys(): 
    %s %(x)profile=[] 
    if dict1[x]=1: 
     %s %(x)profile.append('yes') 

이 코드는 작동하지 않았다, 그러나 나는 나에게 'N'목록 dict1.keys()의 각 x 하나를 줄 것이다 무언가를 찾고 있어요.

+0

잠깐, 와트? 어떻게 그 아이디어를 얻었습니까? ** 문자열 ** 형식입니다. – delnan

+0

내 대답을 보았습니까? – eyquem

답변

4

짧은 대답 : 아니오.

긴 대답 : 아니오, 정확하게 할 수는 없지만 의도가 조금 더 명확하다면 (의사 코드로 말하기는 어렵습니다), 확실한 방법이 있습니다. 당신은 당신이

짧은 위험한 대답 할을하려고하는 일을 할 수 없지만 당신도 할 필요 무엇을 할 수 : 실제로 그렇습니다 당신이 종류의 수를,하지만 당신은 일반적으로

안되지

업데이트 된 댓글

그래서 그 대신 특별히라는 이름의 목록을 갖는

은, 당신이 사용하고자하는 또 다른 사전입니다 :

new_dict = {} 
for key in dict1.keys() 
    new_key = "%sprofile" % key 
    if dict1[key] == 1: # note your = is actually a SyntaxError 
     new_dict[new_key] = ['yes'] 
    else: 
     new_dict[new_key] = [] 

이 "(키) 프로파일"을 목록이 될 것 연관된 각 값라는 이름의 키를 새 사전 초래 원래 dict의 값이 원래 키의 경우 1이거나 빈 목록 인 경우 "yes"을 입력하십시오.

+0

나는'dict1'에서 각각의'key'를 살펴보고 본질적으로'% (key) profile'이라는 이름의 각 키에 대한 새로운 목록을 만들고 dict1 데이터에서 그 목록에 물건을 추가하려고합니다. – marsx

+0

새로운 목록은'dict1'과 별개의 것입니다. 단어 선택이 명확하지 않다는 것을 깨달았습니다. – marsx

+1

동적으로 지역 변수 이름을 지정하는 대신 새 목록에 이름으로 저장해야합니다. – Miles

0
dict1 = {'a':0, 'b':0, 'c':1} 

profile = { k:(['yes'] if v==1 else []) for k,v in dict1.iteritems() } 

print profile 
>>> {'a': [], 'b': [], 'c': ['yes']} 
0

이 방법이 도움이됩니까? : 숫자 문자, 'L'로 시작하지 않아야 객체의 이름으로

dic = { 1:['a','h','uu'] , 3:['zer','rty'] , 4:['hj','125','qsd'] } 

print 'BEFORE LOOP :\n\nglobals()==',globals() 
print 
print "keys of globals() not written __xxx__ :",' , '.join(u for u in globals() if not u.startswith('__')) 
print '\n-----------------------------------------------------------------\nDURING LOOP :\n' 
for x in dic: 
    print 'x==',x 
    globals()['L'+str(x)+'profile'] = dic[x] 
    print 'keys of globals() not written __xxx__ :',' , '.join(u for u in globals() if not u.startswith('__')) 

print '\n-----------------------------------------------------------------\nAFTER LOOP :\n' 
print 'keys of globals() not written __xxx__ :',' , '.join(u for u in globals() if not u.startswith('__')) 
print 
for li in (L1profile,L3profile,L4profile): 
    print 'li==',li 

결과

BEFORE LOOP : 

globals()== {'__builtins__': <module '__builtin__' (built-in)>, '__package__': None, '__name__': '__main__', 'dic': {1: ['a', 'h', 'uu'], 3: ['zer', 'rty'], 4: ['hj', '125', 'qsd']}, '__doc__': None} 

keys of globals() not written __xxx__ : dic 

----------------------------------------------------------------- 
DURING LOOP : 

x== 1 
keys of globals() not written __xxx__ : L1profile , x , dic 
x== 3 
keys of globals() not written __xxx__ : L1profile , L3profile , x , dic 
x== 4 
keys of globals() not written __xxx__ : L1profile , L3profile , x , dic , L4profile 

----------------------------------------------------------------- 
AFTER LOOP : 

keys of globals() not written __xxx__ : L1profile , L3profile , x , dic , L4profile 

li== ['a', 'h', 'uu'] 
li== ['zer', 'rty'] 
li== ['hj', '125', 'qsd'] 

는 생성 된 이름의 첫 글자로 체계적으로 배치됩니다.