我有一个数字列表(比方说,A)。例如:
A = [ 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7]
列表A的许多元素都有与之关联的列表,并以字典的形式存储该结果。此字典的键始终是属于列表A的元素。例如,
D = {0.5: [1, 2], 0.7: [1, 1], 0.3: [7, 4, 4], 0.6: [5]}
在此示例中,元素 0.5 , 0.7 , 0.3 和 0.6 附带了列表和这些元素元素作为字典D中的键。
对于没有附加列表的A元素( viz 0.1 , 0.2 , 0.3 ),我想将它们附加到字典D(并为它们分配空列表)并创建一个新的字典D_new。例如,
D_new = {0.1: [], 0.2: [], 0.4: [], 0.5: [1, 2], 0.7: [1, 1],
0.3: [7, 4, 4], 0.6: [5]}
答案 0 :(得分:4)
使用字典理解,迭代A
中的值,使用D
在D.get()
中查找它们,默认为[]
。
D_new = { x: D.get(x, []) for x in A }
答案 1 :(得分:3)
您也可以从D:
创建 defaultdictfrom collections import defaultdict
D_new = defaultdict(list, D)
# the key in D returns corresponding value
D_new[0.5]
# [1, 2]
# the key not in D returns empty list
D_new[0.2]
# []
答案 2 :(得分:2)
您可以使用dict.setdefault
:
D = {0.5: [1, 2], 0.7: [1, 1], 0.3: [7, 4, 4], 0.6: [5]}
A = [ 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7]
for a in A:
_ = D.setdefault(a, [])
# ^ add's empty list as value if `key` not found
最终价值:
>>> D
{0.5: [1, 2], 0.1: [], 0.2: [], 0.3: [7, 4, 4], 0.6: [5], 0.4: [], 0.7: [1, 1]}
注意:它不会创建新的dict
,而是修改现有的dict。