当我需要保留一个要保持唯一的值的引用列表时,我使用set(稍后,检查是否有in的值)。这不适用于set,因为它是不可散列的。
quite a few techniquesdict的“uniquify”alist,但所有这些都假设我有一个最终的dict,我想将其简化为唯一的元素。
如何以动态的方式做到这一点?对于一个list元素,我只需要set和元素,并且知道它只有在唯一的情况下才会被添加。这种(编辑:理想情况下,但不一定)内置机制是否适用于.add()的包(我使用“包”一词是因为我不想将可能的答案限制在任何数据容器中)

最佳答案

您可以使用frozen dict这是常规dict的不可变实现。
这种方法应该允许您在集合内使用冻结的dict。

>>> from frozendict import frozendict
>>> x = [frozendict({'a':2, 'b':3}),frozendict({'b':3, 'a':2})]
>>> set(x)
{<frozendict {'b': 3, 'a': 2}>}
>>> frozendict({'b': 3, 'a': 2}) in set(x)
True
>>> frozendict({'b': 4, 'a': 2}) in set(x)
False
>>> frozendict({'a': 2, 'b': 3}) in set(x)
True

08-28 22:23