gpt4 book ai didi

python - 根据另一个字典的值过滤字典列表

转载 作者:太空狗 更新时间:2023-10-29 20:13:24 25 4
gpt4 key购买 nike

我有一个字典列表 list_of_dict,一组键 set_of_keys 和另一个字典 dict_to_compare

如果三个可能键中任意两个的值与 dict_to_compare 中的值匹配,我需要过滤字典列表。

输入:

set_of_keys = {'val1', 'val2', 'val3'}

dict_to_compare = {'k1': 'val1', 'k2': 'val2','k3':'val6'}

list_of_dict = [
{'k1': 'val1', 'k2': 'val2', 'k3':'val3'},
{'k1': 'val4', 'k2': 'val5', 'k3':'val6'},
{'k1': 'val7', 'k2': 'val8', 'k3':'val9'}
]

输出:

 out = [{'k1': 'val1', 'k2': 'val2', 'k3': 'val3'}] #First element from list
  • list_of_dicts 中的所有元素都具有相同的键。
  • dict_to_compare 也具有与 list_of_dicts 元素相同的键。
  • 可以匹配 list_of_dicts 中的多个元素。
  • 针对两个键的任意组合的值不应匹配所有三个键。

我尝试通过明确指定一堆 if elif 条件来做到这一点。但问题是 key 集真的很大。有没有更好的方法来解决这个问题?

谢谢

最佳答案

你可以使用sum:

dict_to_compare = {'k1': 'val1', 'k2': 'val2','k3':'val6'}
set_of_keys = {'val1', 'val2', 'val3'}
list_of_dict = [
{'k1': 'val1', 'k2': 'val2', 'k3':'val3'},
{'k1': 'val4', 'k2': 'val5', 'k3':'val6'},
{'k1': 'val7', 'k2': 'val8', 'k3':'val9'}
]
final_list = [i for i in list_of_dict if sum(c in set_of_keys for c in i.values()) >= 2]

输出:

[{'k3': 'val3', 'k2': 'val2', 'k1': 'val1'}]

关于python - 根据另一个字典的值过滤字典列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47535715/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com