python - 计算列表中的元组,无论元组中每个元素的顺序如何

标签 python list collections counter

我有一个关于在 Python 中计算列表中出现次数的问题。

这是列表:

aList = [(11, 0), (9, 7), (23, 9), (25, 3), (9, 9), (21, 2), (10, 9), (14, 14), (8, 13), (14, 9), (11, 4), (1, 14), (3, 9), (3, 1), (11, 9), (9, 1), (7, 0), (9, 3), (9, 3), (16, 11), (9, 7), (9, 13), (11, 9), (26, 18), (18, 9), (11, 14), (9, 9), (24, 26), (12, 21), (1, 14), (3, 14), (15, 14), (26, 9), (11, 3), (4, 14), (9, 14), (26, 4), (7, 26), (9, 3), (13, 3), (9, 24), (14, 9), (3, 26), (7, 25), (5, 9), (9, 5), (14, 4), (9, 0), (4, 26), (4, 26), (9, 9), (18, 18), (9, 7), (7, 6), (9, 9), (14, 13), (11, 9), (3, 9), (9, 15), (25, 9), (10, 24), (0, 4), (10, 3), (8, 12), (9, 4), (20, 9), (9, 9), (6, 9), (9, 8), (9, 9), (24, 16), (9, 11), (14, 9), (7, 12), (1, 9), (9, 13), (5, 13), (9, 9), (25, 9), (4, 9), (1, 3), (10, 9), (12, 9), (9, 9), (11, 11), (14, 3), (9, 25), (16, 1), (25, 16), (25, 16), (5, 9), (9, 3), (5, 1), (10, 24), (10, 25), (24, 1), (9, 1), (24, 9), (9, 7), (25, 3)]

如您所见,这是一个元组列表。 无论元组中每个元素的顺序如何,我都需要计算每个元组的出现次数。

我正在尝试像这样使用 Collections 的计数器:

cnt = Counter()
for l in aList:
    cnt[l] += 1

print cnt

像 (3, 9) 和 (9, 3) 这样的元组应该算作相同的,我的代码现在不这样做。有没有办法用计数器实现这种计数?或者我应该使用其他方法?

谢谢!

最佳答案

应该这样做:

counter = Counter(tuple(sorted(tup)) for tup in your_list)
print counter

关于python - 计算列表中的元组,无论元组中每个元素的顺序如何,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31953807/

相关文章:

c# - 如何使用字符串执行数字有效排序?

java - 如何从 IntStream 填充 List<Integer>?

ios - 从字典中删除嵌套键

BeautifulSoup 的 Python 内存问题

python - Azure 表单识别器 - "TrainingContentMissing",训练数据丢失 : Could not find any training data at the given path

java - 在 android studio 中排序自定义对象的属性列表(API 级问题)

Python 字符串、列表和元组的行为不同

python - 尝试打开 Firefox 通过 Django 的 manage.py 运行 Selenium 测试时权限被拒绝

c++ - 来自内置类型的 python 转换器

java - Java 1.8 Collection Api 性能测试结果令人困惑