Python字典中整数的增量值

2024-10-06 12:25:35 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我写了一个应用程序,可以计算所有比赛中的黄牌数量。 所以假设我计算了巴西队的所有进球,我需要在每一场比赛中增加黄牌的数量。 所以我有一本字典卡片每队字典,看起来是这样的:

['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

但它似乎超出了前一个整数,而不是累加到它上面。 提前谢谢!


Tags: nameadd应用程序数量dictionary字典defnum
1条回答
网友
1楼 · 发布于 2024-10-06 12:25:35

您已经创建了集合而不是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

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

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

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

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

dict和set文本都使用{},一个区别是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

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

相关问题 更多 >