如何将数据从文本文件保存到python字典并选择指定数据

时间:2017-05-17 13:15:26

标签: python dictionary

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个字母的单词?

使用大量单词进行成像

3 个答案:

答案 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

我希望能帮助你。