在字典中搜索列表元素

时间:2021-06-18 15:39:13

标签: python

我想将一个列表的元素一个一个,并在 python 中的 4 个不同字典中搜索它们。那么我想创建一个新字典并将该列表的元素作为键,并将我从这 4 个字典中找到的值作为值?

例如:

list = ['a', 'b', 'c', 'd', 'e']
dict1 = {'a': 10, 'b': 2, 'c': 45}
dict2 = {'a': 15, 'b': 55}
dict3 = {'a': 79, 'b': 6, 'c': 3}
dict4 = {'d': 600, 'e': 30}

我想要的结果:

newlist = {'a': [10, 15, 79, 0], 
'b': [2, 55, 6, 0], 
'c': [45, 0, 3, 0], 
'd': [0, 0, 0, 600], 
'e': [0, 0, 0, 30]}

2 个答案:

答案 0 :(得分:4)

这个 dict 理解将导致您要查找的内容:

<a href="#" onclick="window.open(encodeURI('https://google.com/'),'_system')">link</a>; 

答案 1 :(得分:2)

类似的东西?

from collections import defaultdict

list1 = ['a', 'b', 'c', 'd', 'e']
dict1 = {'a': 10, 'b': 2, 'c': 45}
dict2 = {'a':11, 'b':20, 'z':100}

def collect_values(list1, dictionaries):
    result = defaultdict(list)
    for key in list1:
        for d in dictionaries:
            result[key].append(d.get(key, 0))
    return result

print(collect_values(list1, [dict1, dict2]))

哪个会返回

defaultdict(<class 'list'>, {'a': [10, 11], 'b': [2, 20], 'c': [45, 0], 'd': [0, 0], 'e': [0, 0]})

编辑

如果每次在字典中找不到键时附加零是不受欢迎的行为,则可以使用以下函数:

def collect_values(list1, dictionaries):
    result = defaultdict(list)
    for key in list1:
        for d in dictionaries:
            if key in d.keys():
                result[key].append(d[key])
            elif not result[key]:
                result[key].append(0)
    return result

哪个返回

defaultdict(<class 'list'>, {'a': [10, 11], 'b': [2, 20], 'c': [45], 'd': [0], 'e': [0]})