2017-01-27 6 views
1

でdict.get()のデフォルト引数を使用する方法をここでdict.get()メソッドのデフォルトの引数を使用して単語をカウントするためのスクリプトですカウント。しかし、もし私がもっと多くのデータを集めたいと思えば、word_listの単語エントリのインデックスを言うならば、この余分なデータをget()のデフォルト引数と末尾の式( "+ 1")の両方に挿入する必要があります。は、複雑なデータ

どうすればいいですか?

+0

"より多くのデータ"についてもっと現実的な例を教えてください。ほとんどの人はあなたが示した例のために 'collections.Counter'を直接使うだけなので、 – wim

答えて

1

あなたは、あなたがこのような方法でそれを行うことができ、dict.get方法を使用し続けるしたい場合:

for i, word in enumerate(word_list): 
    elem = word_data.get(word, {'index':[], 'count':0}) 
    word_data.update({ 
     word: { 
      'indexes': elem['indexes']+[i], 
      'count': elem['count']+1 
     } 
    }) 

その後、結果として、あなたが得るでしょう:

{'abc': {'count': 2, 'indexes': [0, 1]}, 'def': {'count': 1, 'indexes': [2]}} 

が、この中に特定のケースでは、各単語の出現回数はそのリストの長さにすぎないので、索引を追跡するほうが効果的でしょうか? :)

0
for word in sorted(set(word_list)): 

    indices = [i for i, x in enumerate(word_list) if x == word] 
    counts = word_list.count(word) 

    word_data[word] = {} 
    word_data[word]['count'] = counts 
    word_data[word]['indexes'] = indices 

これが仲間に役立つことを望みます。