修改生成程序以保存列表中的单词并使用random.choice()选择它们

时间:2011-10-05 19:08:59

标签: python

如何修改生成程序以保存列表中的单词并使用random.choice()选择它们以前执行import random

哪里出错?它无法正常工作

def generate_model(cfdist,word,num=15):
    for i in range(num):
        word=random.choice.im_class(cfdist
                        [word].keys())


>>> generate_model(cfd,'living')

1 个答案:

答案 0 :(得分:1)

该代码有各种奇怪的东西:

def generate_model(cfdist,word,num=15):

您可以使用word作为在词典中查找的键。

    word=

然后你改变它?您是否故意将一次随机查找的结果链接为下一次查找的关键字?

random.choice

如果您是故意链接,这是正确的,但是如果您想要来自同一dict的大量单词,则需要random.sample

.im_class(

这完全没必要。只需将其称为random.choice(即可。请查看random docs

中的示例
cfdist[word]

第一次获得cfdist中的值,其值等于传入word的值(在本例中为living),然后键等于到那之后choice的结果。那是你的意图吗?

.keys())

如果cfdist中的每个值都是dict

,这将有效

现在,你说你想要

  

用于保存列表中的单词

但由于我不确定你到底想要什么,我会举两个例子。首先,我只会汇总这些词,但不会改变其他内容:

def generate_model(cfdist,word,num=15):
    words = []
    # you can add the starting word with words.append(word) here if you want
    for i in range(num):
        word=random.choice(cfdist[word].keys())
        words.append(word)
    return words

第二,我假设您只需要dict中的15个随机单词而不重复:

def generate_model(cfdist,word,num=15):
    return random.sample(cfdist[word].keys(), num)

然后以任何方式将其称为

>>> words = generate_model(cfd,'living')

获取单词列表。