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