在python列表中收集dictionairy值

时间:2016-11-30 08:00:35

标签: python list dictionary collect

我有一个列表,里面有dict值。我想按照ts分组并收集其他值。请注意,ts很常见,并且会出现在列表中的所有词典中。但是像HP,BP这样的其他价值观可以在每个字典中改变。 请建议。

输入

[
{'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 个答案:

答案 0 :(得分: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'}
]