【问题标题】:collect dictionairy values in python list [closed]在python列表中收集字典值[关闭]
【发布时间】:2016-11-30 08:00:34
【问题描述】:

我有一个列表,其中包含 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} 
]

【问题讨论】:

  • 如果有多个HP对应一个ts怎么办?
  • 条件是“如果字典包含ts作为键,则整理字典”?
  • 我不想给-1,而是@KlausD。说你试过什么?

标签: python list dictionary collect


【解决方案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'}
]

【讨论】:

  • 酷,谢谢 Ahsanul,工作正常
猜你喜欢
  • 2021-01-05
  • 2016-03-15
  • 2015-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多