2

リスト内包表記を使用して、次の辞書のリストの内容の一部を削減する Pythonic の方法の開始点を取得するために、この質問をしています。

{'cycle1': [1, 2407, 2393, 14],
 'cycle2': [2, 1657, 1652, 5], 
 'cycle3': [3, 2698, 2673, 25], 
 'cycle4': [4, 2116, 2102, 14], 
 'cycle5': [5, 2065, 2048, 17], 
 'cycle6': [6, 1633, 1615, 18]}

各リストの列は、マークされていませんが、次のヘッダーがあります。

section_num,account_total,billable_count,nonbillable_count

リスト内包表記で最後の 3 つの列、account_total、billable_count、non-billable_count のそれぞれを合計したいと考えています。

各リストメンバーを理解して合計する方法がわかりません。各キーの値を要求する必要があります。各値はリストです。私はそれを行う方法について少し確信が持てません。

4

2 に答える 2

3

を使用してはzipどうですか?これは、各列の個別の合計ですが、それがあなたの望むものかどうかはわかりません。

[sum(x) for x in zip(*my_dict.values())[1:]]

これは以下を出力します:

[12576, 12483, 93]
于 2013-05-08T17:58:59.320 に答える
2

要求された出力形式については少し不明ですが、以下の行は 2 番目の列を合計しています。

In [13]: c = {'cycle1': [1, 2407, 2393, 14],
 'cycle2': [2, 1657, 1652, 5], 
 'cycle3': [3, 2698, 2673, 25], 
 'cycle4': [4, 2116, 2102, 14], 
 'cycle5': [5, 2065, 2048, 17], 
 'cycle6': [6, 1633, 1615, 18]}

In [14]: sum([v[1] for k, v in c.iteritems()])
Out[14]: 12576

python3.3 の使用

>>> sum([v[1] for v in c.values()])
12576
于 2013-05-08T17:58:35.893 に答える