1

我正在制作一个简单的闪存卡程序来构建我的词汇量,因此需要随机化一个字典我在这个网站上找到了很多有用的答案,很多不在这个网站上,并注意到随机播放是一种选择(我知道有 random.choice,但我选择了随机播放)但有些东西我没有掌握。看起来像这样:

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)... 指向该行

我在壳里得到这个

  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

任何帮助,将不胜感激。

4

2 回答 2

2

在 Python 3 中,返回一个只像列表一样dict.keys()的特殊对象——它不是一个真正的列表,所以你不能索引到它或打乱它(它应该只用于迭代)。dict_keys

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

于 2012-09-18T05:38:21.607 回答
1

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

于 2012-09-18T05:36:38.600 回答