4
a = {2: 4, 3: 2, 5: 1, 7: 1}

キーは素数を表します。値はカウンターを表します。辞書のキー*値を繰り返し処理し、合計を合計して得られる数を計算したいと思います。これを行うための最も Pythonic な方法は何ですか?

>>> [k*v for k,v in a.items()]
[8, 6, 5, 7]

しかし

>>> sum(k*v for k,v in a.items())
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable
4

2 に答える 2

7

こちらです:

sum(k*v for k,v in a.items())

またはセマンティックな命名で:

sum(p*c for p,c in primesToCounts.items())
于 2012-06-02T21:15:06.220 に答える
2

どうですか:

>>> a = {2: 4, 3: 2, 5: 1, 7: 1}
>>> [key * val for key, val in a.items()]
... [8, 6, 5, 7]
>>> sum([key * val for key, val in a.items()])
... 26

それはかなりpythonicです。

于 2012-06-02T21:16:00.020 に答える