【发布时间】:2020-04-07 07:37:16
【问题描述】:
循环的目标是当字典中的键(字典在代码中为 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% 确定我在这里做错了什么。有人可以帮助我吗?
【问题讨论】:
-
每次看到
t时都会将其重置为1,因为WorldSeriesWins[t] = 1在循环内。 -
我同意@MarkMeyer。我认为你应该删除第 3 行。我还认为你的
if永远不会是true所以你总是在你的else案例中。我认为您需要类似if t in WorldSeriesWins.keys():的东西。 -
这解决了它,谢谢!那么,list() 从 WorldSeriesWins 字典中创建一个可迭代的键列表?还是我误会了?再次感谢您的帮助!
-
@QMan5 一开始我把它弄得太复杂了,但在我的机器上测试并改进了第一条评论。没有必要像我最初想的那样将它包装在
list(...)中,因为keys()的输出已经是可迭代的。关键更改是您要检查in条件而不是==条件。您的tstr不会是==到WorldSeriesWins.keys()的输出,因为该方法不会返回str。 -
使用
from collections import Counter; WorldSeriesWins = Counter(Team)可能会简单很多
标签: python list dictionary for-loop