比较列表中的所有元素

Posted

技术标签:

【中文标题】比较列表中的所有元素【英文标题】:Compare all elements of list between themselves 【发布时间】:2021-09-14 07:39:17 【问题描述】:

无论元组项目的顺序如何,如何计算列表中元组的出现次数?例如;

the_list = [
    (one, two, three),
    (two, three, four),
    (one, three, two),
    (one, two, three),
    (four, two, one),
]

在上面的列表中,我希望 (one, two, three)(one, three, two) 相等并被视为相同的东西。

【问题讨论】:

你想使用permutations,而不是combinations 您可能想要使用集合或冻结集合而不是元组。如果两个集合包含完全相同的值(无论它们的顺序如何),则它们相等。 【参考方案1】:

您可以在开始计数之前使用计数器对它们进行排序

thelist = [(1,2,3), (2,3,4), (1,3,2), (1,2,3), (4,2,1)]
from collections import Counter
Counter(tuple(sorted(x)) for x in thelist)
Counter((1, 2, 3): 3, (2, 3, 4): 1, (1, 2, 4): 1)

【讨论】:

以上是关于比较列表中的所有元素的主要内容,如果未能解决你的问题,请参考以下文章

比较列表中的元素并删除

如何比较字典值中的多个数组,并将每个数组元素的字典键映射到新数组/列表中

如何比较和搜索列表中的元素与列表 SML 中的元组

比较列表的元素

递归比较两个列表

将每个元素与列表中的其他元素进行比较