我想使用dict.fromkeys()
方法生成字典。我有一年list
,我想为values
分配一个list object
。问题是dict.fromkeys()
生成列表的副本。因此,当我更新列表元素时,它会更新所有副本。
>>> years=["1","2","3"]
>>> names=["a","b","c"]
>>> blank=[]
>>> names_in_years=dict.fromkeys(years,blank.copy())
>>> names_in_years
{'2': [], '4': [], '3': [], '1': []}
>>> names_in_years["2"].extend(names)
>>> names_in_years
{'2': ['a', 'b', 'c'], '4': ['a', 'b', 'c'], '3': ['a', 'b', 'c'], '1': ['a', 'b', 'c']}
我想单独更新dictionary
个对象。结果低于我想要的结果:
{'2': ['a', 'b', 'c'], '4': [], '3': [], '1': []}
有一种方法可以在一行中完成吗?
答案 0 :(得分:1)
只做
names_in_years["2"] = names_in_years["2"] + names
而不是笨重的
names_in_years["2"].extend(names)
前者将旧值分配给旧值,后者将返回的值改为原位。在处理更新密钥值时,分配通常比就地变换更安全,更安全。