2012-06-15 8 views
1

를 사용하여 딕셔너리를 구축 : 나는 우편나는 이름의 목록이 우편

을 사용하려고 할 때 발생하는

{'john smith': [], 'sally jones': [], 'bob jones': []} 

이것은 :

['john smith', 'sally jones', 'bob jones'] 

나는 다음과 같은 형식의 DICT를 구축 할을

zip((all_crew_names, [[] for item in all_crew_names])) 
[(['john smith', 'sally jones', 'bob jones'],), ([[], [], []],)] 

내가 여기서 잘못하고있는 부분은 무엇이며 제대로 마무리 할 수 ​​있습니까?

답변

12

여기에 가장 쉬운 해결책은 사전 이해입니다 dict.fromkeys(names, [])을 사용하는 것이 유혹적 일 수 있지만, 과 동일한 목록이 모든 키에 사용됩니다.

+0

당신을 감사합니다! – David542

+3

사전 보 완성이없는 구형 파이톤의 경우 :'dict (이름의 이름에 대한 이름, []) ' – steveha

+0

+ pythonicnessness의 경우 +1 –

7

zip은 필요하지 않습니다. 파이썬의 이전 버전에서

{name: [] for name in all_crew_names} 

는 이러한 사전 이해가 없었다, 그래서 다음과 같은 코드를 사용할 수 있습니다

names = ['john smith', 'sally jones', 'bob jones'] 
d = {name: [] for name in names} 

:

dict((name, []) for name in all_crew_names) 
3

당신은 실제로 dict 생성자를 사용해야하고, 너무 많은 괄호 있습니다, 나는 그런 일이 알고 있었다 결코

dict(zip(all_crew_names, [[] for item in all_crew_names]) 
+1

+1 질문에 실제로 대답하는 부분은 무엇인가? –