我正在random用这个例子在 Python 3 上学习函数,得到一个错误作为帖子标题。'dict_keys' object is not subscriptable. 我不确定我哪里做错了dictionary。
import random
outcomes = {
'heads':0,
'tails':0
}
sides = outcomes.keys()
for i in range(100):
outcomes[random.choice(sides)] += 1
print("Heads:", outcomes['heads'])
print("Tails:", outcomes['tails'])
Run Code Online (Sandbox Code Playgroud)
下面是错误输出
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-1-f58aad35f1b0> in <module>
8
9 for i in range(100):
---> 10 outcomes[random.choice(sides)] += 1
11
12 print('Heads:', outcomes['heads'])
C:\ProgramData\Anaconda3\lib\random.py in choice(self, seq)
260 except ValueError:
261 raise IndexError('Cannot choose from an empty sequence') from None
--> 262 return seq[i]
263
264 def shuffle(self, x, random=None):
TypeError: 'dict_keys' object is not subscriptable
Run Code Online (Sandbox Code Playgroud)
choices 在作为参数传递的列表大小范围内选择一个数字,然后尝试返回该索引处的元素。
keys() 返回一个没有索引的集合。
您需要一个列表才能使用choice:
sides = list(outcome.keys())