0

これは基本的に私がやろうとしていることですが、機能していません。辞書の値を選び出し、それを数学化する方法はありますか?がらくたの例のために:

dictionaryNumbers = {'a':10,'b':10,'c':1,'d':1,'e':5,'f':1}
dictionaryNumbers['a'] += 5
#The goal would be dictionaryNumbers['a'] would equal 15.

編集:

みんなフィードバックをありがとう。コレクションを変更する関数を呼び出す順序に欠陥があったようです。計算が行われる前に、出力を印刷していました。再度、感謝します。

4

1 に答える 1

6

あなたはほとんどそれを正しくやっていて、あなたのコードはうまく働いています:

>>> dictionaryNumbers = {'a':10,'b':10,'c':1,'d':1,'e':5,'f':1}
>>> dictionaryNumbers['a'] += 5
>>> dictionaryNumbers['a']
15

ただし、まだdictに含まれていないキーについては、最初にテストするか(if key not in dictionaryNumbers)を使用するか、次を使用する必要があります.get()

>>> dictionaryNumbers['z'] = dictionaryNumbers.get('z', 0) + 3

早く古くなります。

しかし、代わりにcollections.Counter()クラスを使用します。

>>> from collections import Counter
>>> counter = Counter()
>>> counter.update({'a':10,'b':10,'c':1,'d':1,'e':5,'f':1})
>>> counter
Counter({'a': 10, 'b': 10, 'e': 5, 'c': 1, 'd': 1, 'f': 1})
>>> counter['a'] += 5
>>> counter['a'] 
15
>>> counter.most_common(3)
[('a', 15), ('b', 10), ('e', 5)]

利点:

  • 新しいキーをテストする必要はありません。存在しないキーにアクセスすると、自動的にカウント0が割り当てられます
  • カウントするアイテムのリストから新しいカウンターを作成するのは、と同じくらい簡単Counter(items_to_count)です。
  • カウンターを合計することができます。すべての値が合計されcounter1 + counter2たnewを返します。Counter
  • カウンターを減算する(負の値を削除する)、それらを交差させる(いずれかのカウントの最小値を見つける)、または和集合を作成する(最大カウント)ことができます。
于 2013-01-22T16:40:09.167 に答える