txt文件中的数据示例:
apple
orange
banana
lemon
pears
使用5个字母过滤无字典的代码:
def numberofletters(n):
file = open("words.txt","r")
lines = file.readlines()
file.close()
for line in lines:
if len(line) == 6:
print(line)
return
print("===================================================================")
print("This program can use for identify and print out all words in 5
letters from words.txt")
n = input("Please Press enter to start filtering words")
print("===================================================================")
numberofletters(n)
我的问题是如何创建一个字典,其键是整数,并用这么多字母标注英文单词,并使用字典识别并打印出所有5个字母的单词?
使用大量单词进行成像
答案 0 :(得分:2)
听起来像是defaultdict
的工作。
>>> from collections import defaultdict
>>> length2words = defaultdict(set)
>>>
>>> with open('file.txt') as f:
... for word in f: # one word per line
... word = word.strip()
... length2words[len(word)].add(word)
...
>>> length2words[5]
set(['lemon', 'apple', 'pears'])
如果您关心重复项和广告订单,请使用defaultdict(list)
和append
代替add
。
答案 1 :(得分:0)
你可以像这样制作你的循环:
for line in lines:
line_len = len(line)
if line_len not in dicword.keys():
dicword.update({line_len: [line]})
else:
dicword[line_len].append(line)
然后你可以通过dicword[5]
答案 2 :(得分:0)
如果我理解,您需要将文档和结果过滤到文件中。为此,您可以使用DictWriter( https://docs.python.org/2/library/csv.html )编写CSV文件。
DictWriter :创建一个像常规编写器一样操作的对象,但将字典映射到输出行。
顺便说一句,您将能够存储和构建您的文档
module Searchable
INDEX_NAME = Rails.application.engine_name.split('_').first
def create_index!(options={})
client = Product.__elasticsearch__.client
client.indices.delete index: INDEX_NAME rescue nil if options[:force]
settings = Product.settings.to_hash.merge Variation.settings.to_hash.merge Brand.settings.to_hash.merge Category.settings.to_hash
mappings = Product.settings.to_hash.merge Variation.mappings.to_hash.merge Brand.mappings.to_hash.merge Category.mappings.to_hash
client.indices.create index: INDEX_NAME,
body: {
settings: settings.to_hash,
mappings: mappings.to_hash
}
end
def setup
Searchable.create_index! force: true
Product.__elasticsearch__.refresh_index!
end
extend self
end
我希望能帮助你。