Skip to main content
 首页 » 编程设计

python之无论元素顺序如何,获取列表中元组的数量

2025年05月04日14exmyth

我有一个看起来像这样的元组列表:

my_list = [(1,12),(12,1),(12,1),(20,15),(7,8),(15,20)] 

我想计算数字组合的数量,而不考虑顺序。例如,如果要简单地打印它,我希望输出为:

1,12 = 3 
20,15 = 2 
7,8 = 1 

基本上,我有一个连接列表,但方向并不重要,所以 1 到 12 与 12 到 1 相同。

我已经为此工作了一段时间,但无法想出一个干净的解决方案。我想出的一切都必须检查两个方向,但元组列表是随机的,因此涵盖所有可能性是荒谬的。我可以很容易地用 set 或其他东西来计算唯一的元组,但是同样,我考虑过的“双向”计数的每个解决方案都是草率的。

我觉得这应该不是很难,但我在这方面工作了这么长时间,实在是太费脑筋了。任何帮助将不胜感激!

请您参考如下方法:

您可以使用 collections.Counter,首先使用 sorted 规范化您的元素。

from collections import Counter 
 
lst = [(1,12),(12,1),(12,1),(20,15),(7,8),(15,20)] 
 
count = Counter(tuple(sorted(t)) for t in lst) 
# output: Counter({(1, 12): 3, (15, 20): 2, (7, 8): 1}) 

然后你可以像这样打印。

for value, amount in count.items(): 
    print(value, '=', amount) 
 
# Prints:  
# (1, 12) = 3 
# (15, 20) = 2 
# (7, 8) = 1