从文件导入随机单词而不重复Python

时间:2016-01-03 21:13:19

标签: python list random set text-files

我尝试创建一个程序,从包含10个以上单词的文本文件中选择10个单词。出于程序的目的,从文本文件导入这10个单词时,我不能两次导入相同的单词!目前我正在使用一个列表,但似乎出现了相同的单词。我对集合有一些了解,并知道它们不能两次保持相同的值。截至目前,我对如何解决这个问题一无所知,我们将非常感激。谢谢!

请在下面找到相关代码! - (p。<Type>基本上是打开文件对话框)

FileSelection

2 个答案:

答案 0 :(得分:1)

WordList成为set

WordList = set()

然后update设置而不是追加:

WordList.update(set([RandWrd]))

当然WordList对于一个集来说是个坏名字。

但是还有一些其他问题:

  • 不要对变量和函数使用大写名称(请遵循PEP8
  • 如果你在循环中画两次相同的单词怎么办?如果单词可能出现多次,则无法保证WordList在循环完成后将包含10个项目。

后者可以通过将循环更改为:

来解决
    while len(WordList) < 10:
        FileLines = open(FileSelection).read().splitlines()
        RandWrd = random.choice(FileLines)
        WordList.update(set([RandWrd]))

尽管如此,你必须考虑到不存在10个不同单词的情况。

即使这样,循环仍然会非常低效,因为您可能会使用random.choice(FileLines)一遍又一遍地绘制相同的单词。但也许你可以根据它做一些有用的东西。

答案 1 :(得分:-1)

不确定我理解你是对的,但是,她和 第3行:&#34;如果wrdcount&#34; 。 。 dit你给wrdcount一个值吗? 也许你想在下面的一行?:

wordset = {}
wrdcount = len(wordset)
while wrdcount < 10:
    # do some work to update the setcode here
    # when end-of-file break