1

我想知道如何计算列表中的组合。更准确地说,我有一个由 6 个随机选择的数字组成的较小列表组成的列表,我想计算每个组合在较大列表中出现的次数,然后最终显示出现次数最少的组合。到目前为止,我尝试使用 Counter() 但它似乎无法计算列表。这是我想做的一个例子:

列表 = [[1,2,3,4,5,6],[1,5,16,35,55,22],[1,2,3,4,5,6],[5,25, 35,45,55,10],[1,5,16,35,55,22],[1,2,3,4,5,6],[9,16,21,22,23,6] ,[9,16,21,22,23,6]]

所以在计算组合后它应该打印组合 [5,25,35,45,55,10] 因为它只在列表中出现过一次

仅供参考,该列表将随机生成,存储大约 10 亿个组合,但考虑到数字范围,只有 1.75 亿个可能的组合

仅供参考 2 我对 python 非常陌生

4

1 回答 1

0

当您构造 Counter 实例时,您可以将列表转换为元组;后者是可散列的,这是对象需要能够用作字典键的属性。

>>> from collections import Counter
>>> l = [[1,2,3,4,5,6],[1,5,16,35,55,22],[1,2,3,4,5,6],[5,25,35,45,55,10],[1,5,16,35,55,22],[1,2,3,4,5,6],[9,16,21,22,23,6],[9,16,21,22,23,6]]
>>> c = Counter(tuple(e) for e in l)
>>> c
Counter({(1, 2, 3, 4, 5, 6): 3, (1, 5, 16, 35, 55, 22): 2, (9, 16, 21, 22, 23, 6): 2, (5, 25, 35, 45, 55, 10): 1})
>>> list(c.most_common()[-1][0])
[5, 25, 35, 45, 55, 10]
于 2013-05-28T13:12:22.697 回答