<p>或者,您可以使用<code>Counter</code>,它类似于dict:</p>
<pre><code>import collections as ct
L = [
['Patriots', 'Giants', '3', '1'],
['Steelers', 'Patriots', '1', '2'],
['Giants', 'Steelers', '3', '5'],
['Giants', 'Patriots', '1', '1'] # tie
]
def count_wins(games):
"""Return a counter of team wins, given a list of games."""
c = ct.Counter()
for team1, team2, s1, s2 in games:
c[team1] += 0
c[team2] += 0
if int(s1) == int(s2):
continue
elif int(s1) > int(s2):
c[team1] += 1
else:
c[team2] += 1
return c
season = count_wins(L)
season
# Counter({'Giants': 0, 'Patriots': 2, 'Steelers': 1})
</code></pre>
<hr/>
<p>后一个代码为新条目提供默认的零增量,并处理关系:</p>
<pre><code>L_tie = [['Cowboys', 'Packers', '3', '3']]
game = count_wins(L_tie)
game
# Counter({'Cowboys': 0, 'Packers': 0})
</code></pre>
<p>计数器有一些查找顶级团队的有用方法:</p>
<pre><code>season.most_common(2)
# [('Patriots', 2), ('Steelers', 1)]
</code></pre>
<p>柜台很灵活。您可以轻松更新计数器:</p>
<pre><code>season.update(game)
season
# Counter({'Cowboys': 0, 'Giants': 0, 'Packers': 0, 'Patriots': 2, 'Steelers': 1})
</code></pre>
<p>您还可以<a href="https://pymotw.com/2/collections/counter.html#arithmetic" rel="nofollow noreferrer">add (subtract and perform set operations with)</a>其他计数器:</p>
<pre><code>L_last = [['49ers', 'Raiders', '7', '10'], ['Packers', 'Patriots', '3', '7']]
last_season = count_wins(L_last)
season + last_season
# Counter({'Patriots': 3, 'Raiders': 1, 'Steelers': 1})
</code></pre>
<p>更新:另请参见<a href="https://stackoverflow.com/a/43906704/4531270">this related answer</a>,获取<code>Counter</code>/generator表达式变量。你知道吗</p>