Python字典中的整数增量值

Pav*_*sky 0 python dictionary

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

['Brazil', 0]
Run Code Online (Sandbox Code Playgroud)

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

def add_yellow_cards_per_team(team_name, cards_num):
    cards_per_team_dictionary[team_name] += cards_num
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

cards_per_team_dictionary[team_name] += cards_num TypeError: 'set' object is not subscriptable 
Run Code Online (Sandbox Code Playgroud)

而且这个:

def add_yellow_cards_per_team(team_name, cards_num):
    cards_per_team_dictionary[team_name] + cards_num
Run Code Online (Sandbox Code Playgroud)

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

Pad*_*ham 7

你创建了一个不是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
Run Code Online (Sandbox Code Playgroud)

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

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

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

In [8]: d
Out[8]: {'Brazil': 3}
Run Code Online (Sandbox Code Playgroud)

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

如果要添加键值配对:

 d[key] = value
Run Code Online (Sandbox Code Playgroud)

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

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

更有效的选择是使用默认值:

from collections import defaultdict
d = defaultdict(int)
for team, count in data:
    d[team] += count
Run Code Online (Sandbox Code Playgroud)

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

  • @PavelZagalsky:你真的看过答案吗? (3认同)