我有一个值列表,表示一段正则表达式在字符串中匹配的次数.从这里,我想找到不止一次出现的数字及其数量.例如,因为[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}
Run Code Online (Sandbox Code Playgroud)
列表或字典输出对我来说不是一个问题 - 再次,无论什么是最快和最简洁的.
我将结合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}
Run Code Online (Sandbox Code Playgroud)