2

文字列内で正規表現が一致する回数を示す値のリストがあります。このことから、複数回出現する数字とその数を求めたいと思います。たとえば、辞書にある場合、またはリストのリストにある場合は、出力として必要[2, 2, 2, 0, 2, 1, 3, 3]です。これを行うための最速で最も簡潔な方法を探しています。現在、次のコードを使用して実行していますが、冗長にする方法が最適であると考えています。{2:4,3:2}[[2,4],[3,2]]

numWinners=[2, 2, 2, 0, 2, 1]
tieCount={x:numWinners.count(x) for x in numWinners}
ties=dict()
for key, value in tieCount.items():
    if value>1:
        ties[key]=value

print ties
{2: 4, 3: 2}

リストまたは辞書の出力は、私にとって実際には問題ではありません-繰り返しになりますが、最速で簡潔なものは何でも。

4

3 に答える 3

5

辞書内包表記と組み合わせcollections.Counterて、重複を選択します。

>>> from collections import Counter
>>> numWinners = [2, 2, 2, 0, 2, 1, 3, 3]
>>> counts = Counter(numWinners)
>>> {k: v for k,v in counts.items() if v > 1}
{2: 4, 3: 2}
于 2013-10-21T00:28:55.327 に答える
2

dict 内包表記を使用してヒストグラムを作成できます。

>>> ns=[2, 2, 2, 0, 2, 1, 3, 3]
>>> {x: ns.count(x) for x in set(ns) if ns.count(x) > 1}
{2: 4, 3: 2}
于 2013-10-21T00:32:29.363 に答える
0

使ってみてcollections.defaultdict

import collections
ties = collections.defaultdict(lambda:0)
for num in numWinners:
     ties[num] = ties[num]+1


 for key,value in ties.iteritems():
     print key, value
于 2013-10-21T00:33:18.937 に答える