2017-04-10 17 views
-1

はありません、これを達成するために、よりエレガントな方法はあります:キーが存在する場合、いずれかによってその値をインクリメントし、そうでない場合は、キーを作成し、1Pythonの辞書のデフォルト値にキー

histogram = {} 
... 
if histogram.has_key(n): 
    histogram[n] += 1 
else: 
    histogram[n] = 1 

答えて

4
にその値を設定します
from collections import Counter 
histogram = Counter() 
... 
histogram[n] += 1 

数値以外の値は、collections.defaultdictを参照してください。この場合、Counterの代わりにdefaultdict(int)を使用できますが、Counterには.elements().most_common()のような機能が追加されています。 defaultdict(list)は別の非常に有用な例です。

Counterにも便利なコンストラクタがあります。代わりに:

histogram = Counter() 
for n in nums: 
    histogram[n] += 1 

あなたはただ行うことができます。

histogram = Counter(nums) 

その他のオプション:リストの場合

histogram.setdefault(n, 0) 
histogram[n] += 1 

histogram[n] = histogram.get(n, 0) + 1 

setdefaultが可能にそれがretとしてより有用なビット壷値、すなわち:

dict_of_lists.setdefault(key, []).append(value) 

と最終ボーナスとして、今オフトラック少し行く、ここdefaultdictの私の最も一般的な用途は次のとおりです。

def group_by_key_func(iterable, key_func): 
    """ 
    Create a dictionary from an iterable such that the keys are the result of evaluating a key function on elements 
    of the iterable and the values are lists of elements all of which correspond to the key. 

    >>> dict(group_by_key_func("a bb ccc d ee fff".split(), len)) # the dict() is just for looks 
    {1: ['a', 'd'], 2: ['bb', 'ee'], 3: ['ccc', 'fff']} 
    >>> dict(group_by_key_func([-1, 0, 1, 3, 6, 8, 9, 2], lambda x: x % 2)) 
    {0: [0, 6, 8, 2], 1: [-1, 1, 3, 9]} 
    """ 
    result = defaultdict(list) 
    for item in iterable: 
     result[key_func(item)].append(item) 
    return result 
+1

[解答]で述べたように、答えることは避けてください誤った、広範な、SW rec、typo、意見に基づく、再現不可能な、または重複する質問。 Write-my-codeリクエストと手間のかからない質問は[so]の話題にはならず、プロのコーディング/個人指導サービスに適しています。良い質問は[質問する]、[mcve]を含める、研究努力をして、将来の訪問者に役立つ可能性を秘めています。不適切な質問に答えることで、ナビゲートが難しくなり、さらにそのような質問が奨励され、時間と専門知識をボランティアする他のユーザーを追い払うことができます。 – TigerhawkT3

+1

@ TigerhawkT3私の答えはあなたの重複した質問よりもはるかによくこのトピックをカバーしていると思うし、次回はこの種の質問が出ます。私はこの答えにリンクします。私はこれを一度に整理するための素晴らしい正式な場所が欲しかった。 –

+1

私は同意しません。まだ答えが良いと思われる場合は、既存の質問の1つに投稿してください。正確な重複に答えると、サイトをナビゲートするのが難しくなります。 – TigerhawkT3

関連する問題