キーが次のような整数にマッピングされる辞書があるとしましょう。
d = {'key1': 1,'key2': 14,'key3': 47}
d
の値の合計を返すための構文的に最小限の方法がありますか。この場合62
?
ご想像のとおり:
sum(d.values())
Python <3では、代わりにitervalues
を使うことをお勧めします(これは一時的なリストを構築しません)。
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
モジュールがすることです。
確かにあります。これは辞書の値を合計する方法です。
>>> d = {'key1':1,'key2':14,'key3':47}
>>> sum(d.values())
62
d = {'key1': 1,'key2': 14,'key3': 47}
sum1 = sum(d[item] for item in d)
print(sum1)
forループを使ってそれを行うことができます
私はsum(d.values())
が合計を得るための最も効率的な方法だと思います。
ラムダ式とともに合計を計算するためにreduce関数を試すこともできます。
reduce(lambda x,y:x+y,d.values())
sum(d.values()) - "d" - >あなたの辞書の変数