2013-07-31 4 views
3

나는 list = ['foo', 'bar', 'baz']과 같은 목록을 가지고 있으며 항목에 대해 for-loop를 실행 중입니다. 내가 할 때마다, 나는 현재 반복되고있는리스트 요소의 이름을 딴 사전을 만들고 싶다.목록 항목 뒤에 이름 지정

SyntaxError: can't assign to operator 

모든 아이디어 : 물론, 일을 나에게 오류를 제공하지 않습니다 예를

for element in list: 
    ('%s' + '_' + 'dict') % element = {} 

위해?

답변

6

eval을 사용하거나 globals() 사전에 새 항목을 만들 수는 있지만 거의 확실하지 않습니다. 대신, 명시 적으로 다른 사전에 키로 사전 이름을 사용 : 당신이 있다면

names = ['foo', 'bar', 'baz'] 

d = {} 
for name in names: 
    d[name] = {} 

또한 '아무튼 파이썬의 이전 버전에서는, DICT 이해 (또는 dict 생성자 발전기 표현을 사용할 수 있습니다 dict comprehensions 허용) :

d = {name: {} for name in names} 
# d = dict((name, {}) for name in names) # generator expression version for pre-2.7 
+0

'locals' dict 수정은 작동하지 않습니다. 전역 범위에 있지 않으면 Python은 실제로 거기에 로컬 변수를 저장하지 않으며 수정 사항도 표시되지 않습니다. – user2357112

+0

@ user2357112 : 지적 해 주셔서 감사합니다. 나는 실제로 작동 할 수있는 것들을 참조하도록 대답을 업데이트했다. (여전히 나쁜 생각 일지라도). – Blckknght

+0

@Blckknght : 사전 이해력을 사용하지 않는 이유가 있습니까? 그것은 당신의 다른 예제보다 훨씬 깨끗해 보입니다. 그래서 만약 dict comprehension을 사용하지 않을 이유가 있다면 궁금합니다. – user139014

6

당신은 dict로 할 수 있습니다. Like :

 
context = {} 
for element in list: 
    context['%s_dict' % element] = {} 

그런 다음 context [ 'foo_dict']를 사용하여 생성 한 사전에 액세스 할 수 있습니다.

관련 문제