2011-09-29 31 views
3

我有一个列表['a','b','c','d']。我需要从列表中构建一个dict,列表中的所有元素都是字典中的键,对于所有元素(例如None)都有一些默认值。字典构造与列表中的元素

如何做到这一点?我是否需要为此编写一个函数或者是否有可用的构造函数?

回答

5

dict.fromkeys()

dict.fromkeys(['a','b','c','d'])将为其所有值返回一个包含None的字典。

dict.fromkeys(['a','b','c','d'], foo)将为其所有值返回一个包含foo的字典。

+0

你回答我比我更好。好主意。 –

2

您可以使用一台发电机迅速将其转换为一个字典:

dict((x, None) for x in L) 

(L为您的列表)

导致:

{'a': None, 'c': None, 'b': None, 'd': None} 
+0

去看看Gabe的想法。它利用内置功能并且速度更快。 –

+0

如果您需要将词典值设置为单独的对象(尽管具有相同的值),则此方法是适当的。另请参阅OP的后续问题:http://stackoverflow.com/questions/7592592/setting-a-value-to-a-dictionarys-dictionary-value –

1
lst = ['a','b','c','d'] 

# using list comprehension 
d = dict([(x, None) for x in lst]) 

# using fromkeys 
d = dict.fromkeys(lst) 
2

你可以试试:

dict.fromkeys(data, default_value) 

如果省略default_value,则默认为None