gpt4 book ai didi

python - 将字典列表和变成字典集

转载 作者:太空宇宙 更新时间:2023-11-04 08:24:16 24 4
gpt4 key购买 nike

我有一个字典列表,如下所示:

 a = [{1000976: 975},
{1000977: 976},
{1000978: 977},
{1000979: 978},
{1000980: 979},
{1000981: 980},
{1000982: 981},
{1000983: 982},
{1000984: 983},
{1000985: 984}]

我可能想错了,但我正在将这个字典列表与另一个字典列表进行比较,并试图删除一个列表中另一个列表中的元素(字典)。为了列出操作,我想将两者转换为集合并执行集合减法。但是,我在尝试进行转换时遇到以下错误。

set_a = set(a)

TypeError: unhashable type: 'dict'

我是不是想错了?

最佳答案

试试这个:

>>> a = [{1000976: 975},
... {1000977: 976},
... {1000978: 977},
... {1000979: 978},
... {1000980: 979},
... {1000981: 980},
... {1000982: 981},
... {1000983: 982},
... {1000984: 983},
... {1000985: 984}]
>>> a.extend(a) # just to add some duplicates
>>> len(a)
20
>>> dict_set = set(frozenset(d.items()) for d in a)
>>> b = [dict(s) for s in dict_set]
>>> b
[{1000982: 981}, {1000983: 982}, {1000981: 980}, {1000985: 984}, {1000978: 977}, {1000980: 979}, {1000977: 976}, {1000976: 975}, {1000984: 983}, {1000979: 978}]
>>> len(b)
10

如果你想在两个字典列表之间做集合减法,那么只需对两个字典使用与上面相同的集合转换,做减法,然后转换回来。

注意:至少你的字典中的所有值也应该是可哈希的(以及键,但这是不言而喻的)。如果不是,您需要对值进行类似的转换,将其转换为某种可散列的、不可变的类型。

注意:这也没有保留原来的顺序;如果这对您很重要,您需要将其调整为类似 this one 的算法.关键是将字典转换为某种不可变类型。

关于python - 将字典列表和变成字典集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58878561/

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