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