web-dev-qa-db-ja.com

辞書内のすべての値を合計する方法

キーが次のような整数にマッピングされる辞書があるとしましょう。

d = {'key1': 1,'key2': 14,'key3': 47}

dの値の合計を返すための構文的に最小限の方法がありますか。この場合62

184
nedblorf

ご想像のとおり:

sum(d.values())

Python <3では、代わりにitervaluesを使うことをお勧めします(これは一時的なリストを構築しません)。

359
phihag

Python 2では、辞書のキーの反復子を返すitervalues()辞書メソッドを使用することで、すべての値の一時的なコピーを作成することを避けることができます。

sum(d.itervalues())

Python 3ではd.values()を使うことができます(そのためにそのメソッドが変更されました(そしてitervalues()は不要になったため削除されました)。

辞書のキーの値を常に反復するバージョンに依存しないコードを書くのをより簡単にするために、効用関数は役に立ちます:

import sys

def itervalues(d):
    return iter(getattr(d, ('itervalues', 'values')[sys.version_info[0]>2])())

sum(itervalues(d))

これは本質的にBenjamin Petersonの six モジュールがすることです。

66
martineau

確かにあります。これは辞書の値を合計する方法です。

>>> d = {'key1':1,'key2':14,'key3':47}
>>> sum(d.values())
62
12
vz0
d = {'key1': 1,'key2': 14,'key3': 47}
sum1 = sum(d[item] for item in d)
print(sum1)

forループを使ってそれを行うことができます

3
Kalyan Pendyala

私はsum(d.values())が合計を得るための最も効率的な方法だと思います。

ラムダ式とともに合計を計算するためにreduce関数を試すこともできます。

reduce(lambda x,y:x+y,d.values())
2

sum(d.values()) - "d" - >あなたの辞書の変数

1
Behlul Valiyev