我是Python的初学者,并制作文字游戏。并且有一个{"player 1":0, "player 2":0}
的字典,可以跟踪两个玩家的得分。
我再次播放选项,所以我需要始终将乐谱存储到该词典中。
但是当我在每轮之后使用它来检索这个字典值时:
for value, index in enumerate(players):
print index, " : ", value
无论玩了多少回合,我都会得到这个:
Player 2 : 0
Player 1 : 1
但是当我使用时:
for index in players:
print index, " : ", players.get(index, 0)
我得到了我想要的实际值。
我的问题是使用这两种方法获取值之间的区别是什么?
答案 0 :(得分:6)
enumerate
正在遍历字典,但默认情况下,您仅iterate over the keys:
<强> ITER(d)强>
在字典的键上返回迭代器。这是iterkeys()的快捷方式。
<强>项()强>
返回字典(键,值)对列表的副本。
<强>值()强>
返回字典值列表的副本。请参阅dict.items()的注释。
我想你想要这个:
for name, score in players.items():
print name, " : ", score
或者也许:
for index, (name, score) in enumerate(players.items()):
print index, " : ", name, " : ", score
为了演示另外两种可能性,此方法查找所有名称:
for name in players: # or players.keys()
print name
这会查找得分(没有名字):
for score in players.values():
print score
答案 1 :(得分:2)
枚举方法返回索引,值对。看来字典枚举是枚举密钥集合(这就是你看密钥的原因)。
答案 2 :(得分:2)
在这里,
for value, index in enumerate(players):
print index, " : ", value
value
是枚举的计数器,这就是为什么你总是会看到value
来自0,1,2,3,......
我认为你真正想要的是
for index, value in enumerate(players):
print value, " : ", players[value] # .get works as well
枚举字典通常没什么意义,因为字典是无序的。