2016-11-30 4 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

Что делать, если есть несколько «HP», соответствующих 'ts'? – 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, отлично работает –