在 python 列表中收集字典值

collect dictionairy values in python list

我有一个列表,其中包含字典值。我想按 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} 
]

您可以使用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'}
]