循环的目标是,当字典中的键(字典中的代码为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%在这里做错了什么。有人可以帮我吗?
您总是将团队的获胜次数重置为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
import collections
WorldSeriesWins = collections.defaultdict(int) # call int() (--> 0) to create unknown values
for t in Team:
WorldSeriesWinds[t] += 1
这由收藏库中的WorldSeriesWins[t] = 1
类完成: