gpt4 book ai didi

python - 当只有一个键值不同时,从字典列表中删除重复项

转载 作者:行者123 更新时间:2023-11-28 19:57:14 26 4
gpt4 key购买 nike

我看到了一些类似的答案,但我找不到针对这种情况的具体答案:

我有一个这样的字典列表:

[
{"element":Bla, "version":2, "date":"12/04/12"},
{"element":Bla, "version":2, "date":"12/05/12"},
{"element":Bla, "version":3, "date":"12/04/12"}
]

实际字典有许多其他键,但我想做的是删除具有完全相同键对值的所有条目,日期除外。也就是说,删除所有重复项(它们不是真正精确的重复项,因为只是日期不同)。在这种情况下,我希望得到的是:

[
{"element":Bla, "version":2, "date":"12/04/12"},
{"element":Bla, "version":3, "date":"12/04/12"}
]

最佳答案

你说你在字典中还有很多问题中没有提到的其他键。

这是O(n) 算法来完成您需要的事情:

>>> seen = set()
>>> result = []
>>> for d in dicts:
... h = d.copy()
... h.pop('date')
... h = tuple(h.items())
... if h not in seen:
... result.append(d)
... seen.add(h)

>>> pprint(result)
[{'date': '12/04/12', 'element': 'Bla', 'version': 2},
{'date': '12/04/12', 'element': 'Bla', 'version': 3}]

h 是字典的副本。 date 键通过 pop 从中删除。

然后 tuple 被创建为可以添加到 set 的可散列类型。

如果 h 以前从未见过,我们将其附加到 result 并添加到 seen。添加到 seenO(1) 以及查找(h not in seen)。

最后,result 仅包含根据定义的 h 值的唯一元素。

关于python - 当只有一个键值不同时,从字典列表中删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15511903/

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