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]]

したがって、組み合わせを数えた後、リストで1回しか発生しないため、組み合わせ[5,25,35,45,55,10]を出力する必要があります

参考までに、リストはランダムに生成され、約 10 億の組み合わせが保存されますが、数値の範囲を考えると、可能な組み合わせは 1 億 7500 万しかありません

参考までに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 に答える