'dict_keys'对象不可下标

时间:2019-10-13 01:28:19

标签: python python-3.x

我正在通过此示例学习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

1 个答案:

答案 0 :(得分:2)

choices在作为参数传递的列表的大小范围内选择一个数字,然后尝试返回该索引处的元素。

keys()返回一个没有索引的集合。

您需要一个列表才能使用choice

sides = list(outcome.keys())