Answers:
没有人愿意提供字典理解的解决方案吗?
>>> keys = [1,2,3,5,6,7]
>>> {key: None for key in keys}
{1: None, 2: None, 3: None, 5: None, 6: None, 7: None}
False
)。
dict.fromkeys(keys, None)
dict.fromkeys(keys, [])
>>> keyDict = {"a","b","c","d"}
>>> dict([(key, []) for key in keyDict])
输出:
{'a': [], 'c': [], 'b': [], 'd': []}
keyDict
具有误导性,因为第一行代码返回a set
而不是a dict
。
d = {}
for i in keys:
d[i] = None
TypeError: 'type' object is not iterable
?
list
是一种类型。除非您有类似的东西list = []
,否则上面的方法将始终给您相同的错误
在许多地方要附加任意键默认/初始值的工作流程,你没有需要到哈希每个键单独的时间提前。您可以使用collections.defaultdict
。例如:
from collections import defaultdict
d = defaultdict(lambda: None)
print(d[1]) # None
print(d[2]) # None
print(d[3]) # None
这样效率更高,它省去了在实例化时散列所有键的麻烦。此外,defaultdict
是的子类dict
,因此通常无需转换回常规字典。
对于需要对许可键进行控制的工作流,可以dict.fromkeys
按照已接受的答案使用:
d = dict.fromkeys([1, 2, 3, 4])
dict.fromkeys([1, 2, 3], [])
所有键都映射到同一列表,修改一个键将全部修改。