python中的组字典键值 [英] Group dictionary key values in python

查看:148
本文介绍了python中的组字典键值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下字典

  mylist = [{'tpdt':'0.00','tmst':45.0, 'tmdt':45.0,'pbc':30,'remarks':False,'shift':1,'ebct':'0.00','tmcdt':'0.00','mc_no':'KA20'},
{'tpdt':'0.00','tmst':45.0,'tmdt':45.0,'pbc':30,'remarks':False,'shift':1,'ebct':'0.00' 'tmcdt':'0.00','mc_no':'KA20'},
{'tpdt':'0.00','tmst':55.0,'tmdt':55.0,'pbc':30,'remarks ':False,'shift':1,'ebct':'0.00','tmcdt':'0.00','mc_no':'KA23'},
{'tpdt':'0.00' ':55.0,'tmdt':55.0,'pbc':30,'remarks':False,'shift':1,'ebct':'0.00','tmcdt':'0.00','mc_no' '}]

我想获得每个字典值KA20的tmst的总和和KA23'在词典列表中。



请问你可以请你的建议吗?

解决方案

您可以使用 itertools.groupby

 >>> for key,group in itertools.groupby(mylist,lambda item:item [mc_no]):
... print key,sum([item [tmst] for group in group])
...
KA20 90.0
KA23 110.0

请注意,对于 groupby 正常工作, mylist 必须按分组键排序:

 从运算符import itemgetter 

mylist.sort(key = itemgetter(mc_no))
/ pre>

I have the following dictionary

mylist = [{'tpdt': '0.00', 'tmst': 45.0, 'tmdt': 45.0, 'pbc': 30, 'remarks': False, 'shift': 1, 'ebct': '0.00', 'tmcdt': '0.00', 'mc_no': 'KA20'}, 
          {'tpdt': '0.00', 'tmst': 45.0, 'tmdt': 45.0, 'pbc': 30, 'remarks': False, 'shift': 1, 'ebct': '0.00', 'tmcdt': '0.00', 'mc_no': 'KA20'}, 
          {'tpdt': '0.00', 'tmst': 55.0, 'tmdt': 55.0, 'pbc': 30, 'remarks': False, 'shift': 1, 'ebct': '0.00', 'tmcdt': '0.00', 'mc_no': 'KA23'}, 
          {'tpdt': '0.00', 'tmst': 55.0, 'tmdt': 55.0, 'pbc': 30, 'remarks': False, 'shift': 1, 'ebct': '0.00', 'tmcdt': '0.00', 'mc_no': 'KA23'}]

I want to get the sum of the key 'tmst' for every dictionary values 'KA20' and 'KA23' in the list of dictionaries.

Could you please have your suggestions on this??

解决方案

You can use itertools.groupby:

>>> for key, group in itertools.groupby(mylist, lambda item: item["mc_no"]):
...     print key, sum([item["tmst"] for item in group])
... 
KA20 90.0
KA23 110.0

Note that for groupby to work properly, mylist has to be sorted by the grouping key:

from operator import itemgetter

mylist.sort(key=itemgetter("mc_no"))

这篇关于python中的组字典键值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆