gpt4 book ai didi

python - 如何在字典列表列表中查找字典的常见出现

转载 作者:行者123 更新时间:2023-11-30 22:04:25 24 4
gpt4 key购买 nike

我有一个字典列表列表,我想找到两个列表之间的通用字典。

例如:

dict_list = [[{'1' : 1,'2' : 2, '3' :3}, {'6' : 6,'5' : 5, '4' : 4}],  
[{'1' : 1,'2' : 2, '3' :3}, {'7' : 7,'8' : 8, '9' : 9}]]

结果应为[{'1' : 1,'2' : 2, '3' :3}]

我尝试使用集合交集,但字典在 python 中是不可散列的。

如何解决这个问题?

最佳答案

列表理解可以在这里工作:

>>> [x for x in dict_list[0] if x in dict_list[1]]
[{'1': 1, '2': 2, '3': 3}]

但这不是一个非常通用的解决方案,因为它假设只存在两个嵌套列表。

更通用的解决方案是使用 collections.Counter() 来计算出现次数,并使用可散列/不可变类型存储字典 items() ,例如 frozenset()tuple() 。然后您需要做的就是过滤计数大于 1 的事件。

示例:

>>> from itertools import chain
>>> from collections import Counter
>>> [dict(k) for k, v in Counter(frozenset(x.items()) for x in chain.from_iterable(dict_list)).items() if v > 1]
[{'1': 1, '2': 2, '3': 3}]

这与方法 @Chris_Rands 非常相似发表在评论中。

关于python - 如何在字典列表列表中查找字典的常见出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53298540/

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