gpt4 book ai didi

python - 如何在Python中过滤出等效的值列表?

转载 作者:行者123 更新时间:2023-11-28 21:34:52 25 4
gpt4 key购买 nike

当给定一个列表列表时,例如:[[5, 2] [2, 5]]
我想将此列表缩减为: [[5, 2]][[2, 5]]

我已经尝试过以下操作:list(map(list, set(map(frozenset, parts_to_add))))
但这种方法的问题在于,它将我的列表转换为集合,虽然这有效 - 它会过滤掉所有等效的列表 - 它也会吃掉我所有的重复值;由于 python 中集合的性质,当给定 [[3, 3]] 时,它会返回 [[3]]。还有其他方法吗?
任何帮助将不胜感激。

最佳答案

你可以这样做:

data = [[5, 2], [2, 5], [3, 3]]

result = set(tuple(e) for e in map(sorted, data))

print([list(e) for e in result])

输出

[[2, 5], [3, 3]]

正如 @soon 提到的,您可以使用卡住计数器,例如:

from collections import Counter

data = [[5, 2], [2, 5], [3, 3]]
result = [e for e in {frozenset(Counter(e)): e for e in data}.values()]
print(result)

输出

[[2, 5], [3, 3]]

上述方法还使用 dict 来删除重复项,而不是 set

关于python - 如何在Python中过滤出等效的值列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52949793/

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