如何将字典与字典列表进行比较

2024-05-15 23:42:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一份字典清单和一本字典。我需要将列表中的每个字典与单独的字典进行比较,如果匹配,则打印出特定的键

例如:

# The list of dictionaries is created out of csv file
list_of_dicts = {
    OrderedDict([('name', 'Alice'), ('A', '2'), ('G', '8'), ('C', '3')])
    OrderedDict([('name', 'Bob'), ('A', '4'), ('G', '1'), ('C', '5')])
    OrderedDict([('name', 'Charlie'), ('A', '3'), ('G', '2'), ('C', '5')])
}

sep_dict = {'name': 0, 'A': 4, 'G': 1, 'C': 5}

for i in list_of_dicts:
    if i == sep_dict:
        sep_dict['name'] = i['name']

比较之后,我想根据目录列表更新sep_dict'name'键。我知道互联网上也有类似的问题,但我对python编程还是新手,不知道如何实现它们。我尝试过简单的for循环和if语句,但它们不起作用。我也尝试过将字典转移到set,但无法理解其背后的逻辑


Tags: ofthename列表forif字典is
1条回答
网友
1楼 · 发布于 2024-05-15 23:42:19
# list of dictionaries
list_of_dicts = [
    {"name": "john", "age": 30, "colour": "red"},
    {"day": 1, "month": 7, "year": 2010},
    {"item": "apple", "cost": 55, "name": "pink lady"},
]

sep_dict = {'name': 0, 'A': 4, 'G': 1, 'C': 5}

for dictionary in list_of_dicts:
    for key in dictionary:
        if key in sep_dict:
            print(key)
            # update sep_dict however you like, although note that
            # there may be multiple dictionaries with the same key
            # in list_of_dicts
            sep_dict[key] = dictionary[key]

这与您试图做的类似,只是比较sep_dict中的键和list_of_dicts中的每个字典


您可以遍历键值对:

for dictionary in list_of_dicts:
    for key,value in dictionary.items():
        if key in sep_dict:
            print(key, ":", value)

可选地,您可以考虑使用列表理解来获取所有密钥值对的列表,这些密钥对与{{CD1>}共享密钥,然后用它做任何您想要的。这与前面的代码块基本相同,但更简洁

common = [(k,d[k]) for d in list_of_dicts for k in sep_dict if k in d]
#> [('name', 'john'), ('name', 'pink lady')]
for k,v in common:
    print(k, ":", v)
#> name : john
#> name : pink lady

相关问题 更多 >