使用zip建立一个字典

时间:2012-06-15 18:19:29

标签: python

我有一个名单:

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

我想用以下格式构建一个字典:

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

当我尝试使用zip

时会发生这种情况
zip((all_crew_names, [[] for item in all_crew_names]))
[(['john smith', 'sally jones', 'bob jones'],), ([[], [], []],)]

我在这里做错了什么,我怎么能正确地把它拉上来?

3 个答案:

答案 0 :(得分:12)

这里最简单的解决方案是词典理解:

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

请注意,使用dict.fromkeys(names, [])可能很诱人,但这会导致相同的列表用于所有键。

答案 1 :(得分:7)

您不需要zip

{name: [] for name in all_crew_names}

在旧版本的Python中没有这样的字典理解,因此可以使用以下代码:

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

答案 2 :(得分:3)

您需要实际使用dict构造函数,并且您有太多括号:

dict(zip(all_crew_names, [[] for item in all_crew_names])
相关问题