在Python中随机化字典时输入错误

时间:2012-09-18 05:31:14

标签: python dictionary typeerror

我正在制作一个简单的闪存卡程序来构建我的词汇,因此需要随机化一个词典 我在这个网站上发现了许多有用的答案,很多都是在这个网站上,并注意到随机播放是一种选择(我知道有随机选择,但我随便去了)但是有一些我不理解的东西。看起来像这样:

import random

vocab_dict = {'word1':'def1',
           'word2':'def2',
           'etc.':'etc.'}

vocab_dict_rand = vocab_dict.keys()  
random.shuffle(vocab_rand)           **#<--This is where problem occurs**

for key in vocab_rand:
      print word
      input ""
      print definition
      input ""

input exit

所以程序崩溃并使用random.shuffle(vocab_rand)指向该行......

我在shell中得到了这个

  File "C:\Python31\lib\random.py", line 270, in shuffle
    x[i], x[j] = x[j], x[i]
TypeError: 'dict_keys' object does not support indexing

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:2)

在Python 3中,dict.keys()返回一个特殊的dict_keys对象,它只是一个列表 - 它不是一个真正的列表,所以你不能索引它或者将它洗牌(它应该是仅用于迭代)。

相反,请使用vocab_rand = list(vocab_dict.keys())

答案 1 :(得分:1)

在Python 3中,keys返回迭代器,而不是列表。你需要有一个列表来洗牌。使用vocab_dict_rand = list(vocab_dict.keys())