使用字典时循环未正确迭代

问题描述 投票:1回答:1

循环的目标是,当字典中的键(字典中的代码为WorldSeriesWins)等于来自名为Team的列表中的t时,将字典的值加1。由于我认为自己编写的代码有误,因此似乎无法正确迭代。

这是我认为不正确的代码部分:

WorldSeriesWins = {}
for t in Team:
   WorldSeriesWins[t] = 1
   if t == WorldSeriesWins.keys():
        WorldSeriesWins[t] +=1
   else:
       WorldSeriesWins[t] = 1

结果:

 {'Boston Americans': 1, 'New York Giants': 1, 'Chicago White Sox': 1, 'Chicago Cubs': 1, 'Pittsburgh Pirates': 1, 'Philadelphia Athletics': 1, 'Boston Red Sox': 1, 'Boston Braves': 1, 'Cincinnati Reds': 1, 'Cleveland Indians': 1, 'New York Yankees': 1, 'Washington Senators': 1, 'St. Louis Cardinals': 1, 'Detroit Tigers': 1, 'Brooklyn Dodgers': 1, 'Milwaukee Braves': 1, 'Los Angeles Dodgers': 1, 'Baltimore Orioles': 1, 'New York Mets': 1, 'Oakland Athletics': 1, 'Philadelphia Phillies': 1, 'Kansas City Royals': 1, 'Minnesota Twins': 1, 'Toronto Blue Jays': 1, 'Atlanta Braves': 1, 'Florida Marlins': 1, 'Arizona Diamondbacks': 1, 'Anaheim Angels': 1}

这意味着没有重复项,但是肯定是基于列表的。我不确定100%在这里做错了什么。有人可以帮我吗?

python list dictionary for-loop
1个回答
2
投票

您总是将团队的获胜次数重置为1。只需省去第三行。

此外,要检查团队是否已在词典中,请使用in,而不是==

最后,使用a in dict代替a in dict.keys()就足够了(并且更加有效),有关更多详细信息,请参见this SO answer。>

WorldSeriesWins = {}
for t in Team:
   if t in WorldSeriesWins:
        WorldSeriesWins[t] +=1
   else:
       WorldSeriesWins[t] = 1

此外,使用Python标准库中的collections.defaultdict可能更易读:

collections.defaultdict

0
投票
import collections
WorldSeriesWins = collections.defaultdict(int) # call int() (--> 0) to create unknown values
for t in Team:
    WorldSeriesWinds[t] += 1

0
投票

这由收藏库中的WorldSeriesWins[t] = 1类完成:

© www.soinside.com 2019 - 2024. All rights reserved.