Python字典中的整数增量值

时间:2016-06-25 11:25:30

标签: python dictionary

所以我写了一个应用程序,通过锦标赛的所有比赛计算足球比赛中的黄牌数量。 所以,让我们说我算上巴西的所有目标,我需要在循环中经历的每场比赛中增加黄牌的数量。 所以我有这个字典cards_per_team_dictionary,看起来像这样:

['Brazil', 0]

并且我不想在每场比赛中增加int值。 我尝试了以下但它似乎不起作用:

def add_yellow_cards_per_team(team_name, cards_num):
    cards_per_team_dictionary[team_name] += cards_num

我收到错误:

cards_per_team_dictionary[team_name] += cards_num TypeError: 'set' object is not subscriptable 

还有这个:

def add_yellow_cards_per_team(team_name, cards_num):
    cards_per_team_dictionary[team_name] + cards_num

但它似乎超过了之前的整数,而不是加起来。 提前谢谢!

1 个答案:

答案 0 :(得分:6)

您已创建而不是 dict

In [4]: d = {"Brazil",0}

In [5]: d["Brazil"] += 3
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-5-8db3ec29e78a> in <module>()
----> 1 d["Brazil"] += 3

TypeError: 'set' object is not subscriptable

要创建一个字典,您可以添加由冒号分隔的键/值对,即key:value

In [6]: d = {"Brazil":0}

In [7]: d["Brazil"] += 3

In [8]: d
Out[8]: {'Brazil': 3}

dict和set literals都使用{},一个区别是d = {}创建一个空dict,其中st = set()需要创建一个空集。

如果要添加键值配对:

 d[key] = value

但是对于重复键,您可以使用dict.setdefault

data = [("Brazil", 4),("Argentina",6)]
d = {}
for team, count in data:
    d.setdefault(team, 0)
    d[team] += count

更有效的选择是使用defauldict

from collections import defaultdict
d = defaultdict(int)
for team, count in data:
    d[team] += count

在这两种情况下,如果密钥不存在,则会添加新值,如果确实存在,则密钥的值会增加。