gpt4 book ai didi

python - 从列表中删除重复元素,但只删除那些重复元素为奇数的元素

转载 作者:行者123 更新时间:2023-11-28 21:18:30 24 4
gpt4 key购买 nike

我正在尝试从列表中删除重复元素,重复元素的数量是奇数。例如下面的列表:[1, 2, 3, 3, 3, 5, 8, 1, 8] 我有 1 个重复 2 次,3 个重复 3 次,8 个重复 2 次.所以 1 和 8 应该不存在,而不是 3 的 3 个元素,我只需要留下 1。

这是我想出的:

def remove_odd_duplicates(arr):
h = {}
for i in arr:
if i in h:
h[i] += 1
else:
h[i] = 1

arr = []
for i in h:
if h[i] % 2:
arr.append(i)

return arr

它正确返回所有内容:[2, 3, 5],但我相信可以用更好的方式编写。有什么想法吗?

最佳答案

您可以使用 collections.Counter和列表理解,像这样

data = [1, 2, 3, 3, 3, 5, 8, 1, 8]
from collections import Counter
print [item for item, count in Counter(data).items() if count % 2]
# [2, 3, 5]

Counter 给出了一个字典,输入中的每个可迭代元素作为键,它们对应的计数作为值。因此,我们遍历该字典并检查计数是否为奇数并仅过滤掉那些项目。

注意:这个解决方案的复杂度仍然是 O(N),就像您的原始程序一样。

关于python - 从列表中删除重复元素,但只删除那些重复元素为奇数的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26451046/

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