gpt4 book ai didi

python - 对字典列表应用集合操作

转载 作者:太空宇宙 更新时间:2023-11-03 13:37:50 25 4
gpt4 key购买 nike

我的列表多次包含相同的词典,例如

喜欢

[ {'name': 'ZYLOG SYSTEMS LTD', 'gram': '1'}, {'name': 'ZYLOG SYSTEMS LTD', 'gram': '1'}]

当我对此应用设置操作以使其与众不同时,它给出

TypeError: unhashable type: 'dict'

使这种列表项与众不同的正确方法是什么?

最佳答案

字典是可变对象,因此不能存储在集合中。您可以将字典转换为表示相同数据的不可变对象(immutable对象);在对这些应用 set() 操作后,您可以转换回字典:

unique = [dict(t) for t in set(tuple(sorted(d.items())) for d in l)]

这会将每个字典转换为包含所有键值对的排序元组;然而,这假设字典中的也是不可变的。

排序是必需的,因为有可能产生两个具有相同键值对但由于散列冲突而以不同顺序列出它们的字典;两个键可以映射到同一个哈希表槽,但先插入的键将获胜:

>>> {'bar': 42, 'baz': 81} == {'baz': 81, 'bar': 42}
True
>>> list({'bar': 42, 'baz': 81}) == list({'baz': 81, 'bar': 42}) # compare keys in order
False

关于python - 对字典列表应用集合操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36931808/

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