所以我写了一个应用程序,通过比赛的所有比赛计算足球比赛中的黄牌数量.所以,让我说我算上所有巴西队的进球,我需要在循环中经历的每场比赛中增加黄牌的数量.所以我有这个字典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)
但它似乎超过了之前的整数,而不是加起来.提前致谢!
你创建了一个不是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)
在这两种情况下,如果密钥不存在,则添加新值,如果确实存在,则增加密钥的值.