python - 如何比较同一元组列表中的出现次数

标签 python list dictionary tuples counter

我有一个这样的元组列表: 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/

相关文章:

python - 使用 pip 和 macport 安装的 virtualenv 路径错误

c# - 不同类型的列表列表

java - 使用 Java 列表时出错

java - 我不能在 GWT Collections.unmodifiableList(List l) 中使用来使我的列表只可读,因为不是可序列化的替代方法吗?

python - g++ 不可用,如果使用 conda : `conda install m2w64-toolchain`

python - 皮德拉克 : About Penetration in discrete time simulation

c++ - 使用值对 std::map 进行排序

java - 如何对 Collectors.counting() 的结果进行算术运算?

algorithm - 计算一组点的哈希码的最佳方法是什么?

python - 如何获取 Flask 请求的 url 的不同部分?