2017-02-07 9 views
1

まずは、テキストファイル内の単語数をカウントする機能と、単語の出現回数に基づいて辞書を作成するプログラムがあります。プログラムは今辞書は、私は、オブジェクトを2つのインスタンス変数、単語(文字列)と、それが表示されますどのように多くの時間(整数)を有するようにオブジェクトのリストを作成することを考えると辞書からのオブジェクトリストの作成

def counter (AllWords): 
    d = {} 
    for word in AllWords: 
     if word in d.keys(): 
      d[word] = d[word] + 1 
     else: 
      d[word] = 1 
    return d; 

f = open("test.txt", "r") 
AllWords = [] 

for word in f.read().split(): 
    AllWords.append(word.lower()) 

print(counter(AllWords)) 

です。どんな助けもありがとう!

について何

答えて

1

[('Foo',3),('Bar',2)] 

それとも、独自のクラスを定義することができます:

class WordCount: 

    def __init__(self,word,count): 
     self.word = word 
     self.count = count 

を、リストの内包表記を使用します。それはのようなタプルのリストを作成します

list(d.items()) 

[WordCount(*item) for item in d.items()] 

ここでWordCountオブジェクトのリストを作成します。

それにもかかわらず、あなたの counter(..)方法は実際には必要ありません:Pythonはすでに持っている Counter

いわば「のものと辞書」です
from collections import Counter 

from collections import Counter 

Counter(allWords) 
:あなたは、単にそれが好きで構築することができます
+0

のHiの出現箇所の数が、私は自分のクラスメソッドを定義使用したいが、私は何が起こっているのか、非常にわかりません。私は辞書があると言うことができます d = {"this":5、 "is":7、 "wrong":8} – ProShitposter

+0

こんにちは、私は自分のクラスメソッドを定義したいと思っていますが、に。 ) と私たちは私たちのクラス クラスWORDCOUNTを(定義: デフ__init __(自己、単語私は辞書 D = {8:5、 "ある": "間違っている"、7 "これを"}考えてみましょう、カウント): self.word =単語 self.count = list_obj =カウント[d.itemsでアイテムにWORDCOUNT(*項目)を()] プリント(list_obj) しかし、このdoesntのは、リストを作りますか?申し訳ありません、私はクラスとオブジェクトから始め、それを得るのに苦労しています。 – ProShitposter

+0

'list_obj'はリストで、' WordCount'アイテムのリストです。 * list comprehension *によって構築されます。 type(list_obj)で型をチェックすることができます。 –

1

アイテムをカウントするためにホイールに再インストールする必要はありません。

すべての重量挙げを行うには、もちろんcollections.Counterと力強いstr.splitを使用してください。

import collections 

with open("text.txt") as f: 
    c = collections.Counter(f.read().split()) 

は今cカップルが含まれています:単語、単語

関連する問題