我正在通过此示例学习Python 3上的random
函数,但帖子标题出现错误。 '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'])
下面是错误输出
---------------------------------------------------------------------------
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
答案 0 :(得分:2)
choices
在作为参数传递的列表的大小范围内选择一个数字,然后尝试返回该索引处的元素。
keys()
返回一个没有索引的集合。
您需要一个列表才能使用choice
:
sides = list(outcome.keys())