我有一个这样的元组列表:
L = [(23,56,48),(48,93,81),(48,56,23),(54,34,21),(48,98,71),(98,71 ,48),(56,23,48)]
一些元组具有完全相同的数字但顺序不同。我想计算元组的出现次数并覆盖内部具有相同值的元组。我在这里阅读了几个答案,并设法使用 Counter 方法做了一些事情。但是我尝试过的似乎对我不起作用。我是 python 的新手,所以我可能不了解 Counter 方法的确切用法。
L1 = Counter()
for item in L:
for element in item:
if element in item:
L1[tuple(item)] = L1[tuple(item)] + 1
print(L1)
我得到的结果是:
Counter({(23, 56, 48): 3, (48, 93, 81): 3, (48, 56, 23): 3, (54, 34, 21): 3,
(48, 98, 71): 3, (98, 71, 48): 3, (56, 23, 48): 3})
而我想要得到的结果是:
Counter({(23, 56, 48): 3, (48, 98, 71): 3, (48, 93, 81): 1, (54, 34, 21): 1})
最佳答案
您需要将具有相同值的元组映射到相同的键,一种方法是对元组进行排序(使用 sorted ):
from collections import Counter
L = [(23,56,48),(48,93,81),(48,56,23),(54,34,21),(48,98,71),(98,71,48),(56,23,48)]
result = Counter(tuple(e) for e in map(sorted, L))
print(result)
输出
Counter({(23, 48, 56): 3, (48, 71, 98): 2, (21, 34, 54): 1, (48, 81, 93): 1})
关于python - 如何比较同一元组列表中的出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54007215/