Skip to main content
 首页 » 编程设计

python之遍历字典列表并从列表中找到匹配的元素并将匹配键的值附加到 defaultdict

2025年05月04日22dudu

我有一个字典列表。我们称它为:list_of_dict。列表中的词典采用以下形式:

{'a' : 1, 
'b' : 5, 
'c' : 3, 
'd' : 6} 

和

{'a' : 3, 
'f' : 2, 
'g' : 1, 
'h' : 3, 
'i' : 5, 
'j' : 3} 

我有另一个名为 list_to_match 的列表,它只包含一些字母:['a', 'f', 'x']

我需要遍历 list_of_dict 并找到与列表中的元素匹配的键,并将值附加到列表项的空 defaultdict 中。如果没有找到,将 0 添加到列表中。

defaultdict 被初始化为:

d = collections.defaultdict(list) 

我希望最终的 defaultdict 看起来像:

{'a' : [1, 3], 
'f' : [0, 2], 
'x' : [0, 0]} 

到目前为止,我有:

for ld in list_of_dict: 
    for match in list_to_match: 
        for k, v in ld.items(): 
            d[match].append(v) 
    d[match].append(0) 

现在除了最后一行之外所有这些都有效,因为很明显,该范围内不存在匹配。 现在,我在 defaultdict 中得到的是:

{'a' : [1, 3], 
'f' : [2]} 

0 缺失,x 也缺失。我该如何解决?

请您参考如下方法:

你可以使用字典理解:

{i: [j[i] if i in j else 0 for j in list_of_dict] for i in list_to_match} 

产量:

{'a': [1, 3], 'f': [0, 2], 'x': [0, 0]} 

更简单:

{i: [j.get(i, 0) for j in list_of_dict] for i in list_to_match}