按字长索引

2024-05-28 22:48:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我的目的只是做一个刽子手游戏。然而,我有点过于雄心勃勃了。我想让用户输入他们想要的单词多长时间。然后随机选择一个长度相同的单词。索引这样长的整个字典在每次迭代中都会花费太长的时间。所以。我有一本字典,格式是这样的:

酵母多糖

酶谱

酵素

。。。在

我想能够输出一个文件为每个'字长'自动使用这个程序。像这样:

1字母单词.txt在

二字母单词.txt在

等等。在

我昨天开始玩python。我在网上和这个网站上都搜索了一下,结果一无所获。 我想知道如何从这个特定的编程问题开始。 提前谢谢! (为了澄清,hangman游戏将在请求的字长文件中打开一个随机行,从而显著降低性能影响……相当显著。)


Tags: 文件用户目的txt游戏字典格式字母
3条回答

例如

url = urllib.urlopen('http://download.oracle.com/javase/tutorial/collections/interfaces/examples/dictionary.txt')
random.choice([item for item in url if len(item) == 8])

获取随机的文件行可能也不是你想做的。。。把它们放在一个列表和/或dict中,即使是几百万个单词也可以。在

通过迭代所有单词并将其添加到列表种子defaultdict中,可以按长度存储单词列表:

from collections import defaultdict
import random

wordsByLength = defaultdict( list )
for word in allWords:
    wordsByLength[ len(word) ].append( word )

当你需要一个随机词时,你可以:

^{pr2}$

或者可以用指定的长度替换randomLen。在

把整本词典载入内存其实没什么大不了的。你可以试试这样的方法:

import random
from collections import defaultdict

# load words
index = defaultdict(list)
with open('words.txt') as file:
    for line in file:
        word = line.strip().lower()
        index[len(word)].append(word)

# pick a random word
length = int(raw_input('Enter word length: '))
word = random.choice(index[length])

如果您坚持按字长生成单独的文件,请在加载索引后运行此代码,如下所示:

^{pr2}$

相关问题 更多 >

    热门问题