【发布时间】:2016-05-25 11:49:14
【问题描述】:
我有这个字典列表:
[{'Total Incidents': '1', 'CrimeTime': '19'},
{'Total Incidents': '1', 'CrimeTime': '19'},
{'Total Incidents': '1', 'CrimeTime': '19'},
{'Total Incidents': '1', 'CrimeTime': '20'},
{'Total Incidents': '1', 'CrimeTime': '20'},
{'Total Incidents': '1', 'CrimeTime': '21'},
{'Total Incidents': '1', 'CrimeTime': '21'}]
对于同一小时内发生的每个事件,我需要将“总事件”的值转换为 int,并将它们相加(分钟和秒无关)。输出应该是这样的:
[{'Total Incidents': 3, 'CrimeTime': '19'},
{'Total Incidents': 2, 'CrimeTime': '20'},
{'Total Incidents': 2, 'CrimeTime': '21'}]
我用过这个方法:
[{ 'CrimeTime': g[0],
'Total Incidents': sum(map(lambda x: int(x['Total Incidents']), g[1])) }
for g in itertools.groupby(mydata, lambda x: x['CrimeTime']) ]
但不幸的是,有时它会重复“犯罪时间”,所以我得到两个具有相同“犯罪时间”的字典,而不是只有一个包含事件总和的字典。原始列表要大得多,我只是用一个简短的版本来更好地解释自己。
如果您不理解我的问题,请随时提出,以便我更好地解释自己。
【问题讨论】:
-
为使
groupby正常工作,mydata应按用于分组的相同键排序! -
所以我需要对 mydata 进行排序?
-
是的,我会发布一个例子。
标签: python list python-2.7 dictionary