2017-04-19 5 views
1

私は2つのdictを持っていて、ユーザー名が重複していて、ユーザー名で一意のdictに変換する合計フィールドが必要ですが、どうやってそれを行うのか分かりません。 誰かが私を助けますか?私は非常に混乱しています。Dict unionと別のフィールドを合計する

{username:'unique_username', t:20} 
{username:'unique_username_2', t:13} 
{username:'unique_username', t:20} 
{username:'unique_username_2', t:11} 

私はあなたの注意のため

{username:'unique_username', t:40} 
{username:'unique_username_2', t:33} 

このような感謝を返す必要があります。

+0

は、リスト内のこれらのdictsていますか? – pkuphy

+0

うん、私は置いて忘れてしまった:[{オブジェクト}、{オブジェクト} ...] –

答えて

1

使用は、所望の辞書を構築するために、その概要をループその後、サマリー合計を集計するcollections.Counter()を使用することができます。

>>> from collections import Counter 

>>> maps = [ 
    {'username': 'unique_username', 't': 20}, 
    {'username': 'unique_username_2', 't': 13}, 
    {'username': 'unique_username', 't': 20}, 
    {'username': 'unique_username_2', 't': 11}, 
] 

>>> summary = Counter() 
>>> for m in maps: 
     summary[m['username']] += m['t'] 

>>> [{'username': uun, 't': total} for uun, total in summary.items()] 
[{'username': 'unique_username_2', 't': 24}, {'username': 'unique_username', 't': 40}] 
+0

ありがとう、それは仕事だが、私のために混乱している、笑 –

関連する問題