2016-11-30 12 views
-1

私はそれにdict値を持つリストを持っています。私はTSでグループ化し、他の値を収集したい。 tsは一般的なものであり、リストのすべての辞書に存在することに注意してください。しかし、HP、BPのような他の値は各辞書で変更することができます。 お勧めします。pythonリストの辞書の値を収集する

入力

[ 
{'ts': '2016-11-29 19:01', u'HP': 1}, 
{'ts': '2016-11-29 19:01', u'BP': 1}, 
{'ts': '2016-11-29 19:01', u'AP': 1}, 
{'ts': '2016-11-29 19:02', u'HP': 1}, 
{'ts': '2016-11-29 19:02', u'AP': 1} 
] 

出力

[ 
{'ts': '2016-11-29 19:01', u'HP': 1, u'BP': 1,u'AP': 1 }, 
{'ts': '2016-11-29 19:02', u'HP': 1, u'AP': 1} 
] 
+1

'ts 'に対応する' HP'が複数ある場合はどうなりますか? – thefourtheye

+0

条件が "tsをキーとして"辞書に照合されていますか? –

+1

私は-1を与えたいが、@ KlausDとしたい。あなたは何を試しましたか? – obayhan

答えて

0

を使用できitertools.groupby()

from itertools import groupby 

result = [] 
for _, v in groupby(a,lambda x:x['ts']): 
    temp_dict = {} 
    for dic in v: 
     temp_dict.update(dic) 
    result.append(temp_dict) 

print result 

出力:

[ 
{u'AP': 1, u'HP': 1, u'BP': 1, 'ts': '2016-11-29 19:01'}, 
{u'AP': 1, u'HP': 1, 'ts': '2016-11-29 19:02'} 
] 
+0

Kool、ありがとうAhsanul、うまく動作します –

関連する問題