根据员工姓名字段的值计算python列表中的值之和
问候大家,我的python文件中有一个列表,根据这个列表,我如何计算每个员工a、B和C的根据员工姓名字段的值计算python列表中的值之和,python,Python,问候大家,我的python文件中有一个列表,根据这个列表,我如何计算每个员工a、B和C的实际持续时间之和 以下是我的名单: [{'employee_name': 'A', 'actual_duration': 14}, {'employee_name': 'A', 'actual_duration': 6}, {'employee_name': 'B', 'actual_duration': 8}, {'employee_name': 'B', 'actual_duration': 22}
实际持续时间之和
以下是我的名单:
[{'employee_name': 'A', 'actual_duration': 14},
{'employee_name': 'A', 'actual_duration': 6},
{'employee_name': 'B', 'actual_duration': 8},
{'employee_name': 'B', 'actual_duration': 22},
{'employee_name': 'C', 'actual_duration': 15}]
尝试以下操作,使用for
循环迭代原始列表并连接项目:
for entry in times:
if entry['employee_name'] not in map(lambda i: i['employee_name'], aggregate):
aggregate.append(entry)
else:
aggregate[map(lambda i: i['employee_name'], aggregate).index(entry['employee_name'])]['actual_duration']+=entry['actual_duration']
一种方法是使用collections.defaultdict
l = [ {'employee_name': 'A', 'actual_duration': 14},
{'employee_name': 'A', 'actual_duration': 6},
{'employee_name': 'B', 'actual_duration': 8},
{'employee_name': 'B', 'actual_duration': 22},
{'employee_name': 'C', 'actual_duration': 15} ]
from collections import defaultdict
d_dict = defaultdict(int)
for k,v in [d.values() for d in l]:
d_dict[k]+=v
new_l = []
for k,v in d_dict.items():
new_l.append({'employee_name': k, 'actual_duration': v})
new_l
输出:
[{'actual_duration': 20, 'employee_name': 'A'},
{'actual_duration': 30, 'employee_name': 'B'},
{'actual_duration': 15, 'employee_name': 'C'}]
有两种方法,一种是使用默认dict:
your_data=[{'employee_name': 'A', 'actual_duration': 14},
{'employee_name': 'A', 'actual_duration': 6},
{'employee_name': 'B', 'actual_duration': 8},
{'employee_name': 'B', 'actual_duration': 22},
{'employee_name': 'C', 'actual_duration': 15}]
from collections import defaultdict
default_dict=defaultdict(list)
for i in your_data:
track=[]
for j,l in i.items():
[track.insert(0, (l, j)) if isinstance(l,int) else track.insert(1,(l,j))]
default_dict[track[1]].append(track[0][0])
print({'employee_name : {}'.format(key[0]):'actual_duration : {} '.format(sum(values)) for key,values in default_dict.items()})
输出:
{'employee_name : A': 'actual_duration : 20 ', 'employee_name : C': 'actual_duration : 15 ', 'employee_name : B': 'actual_duration : 30 '}
第二个详细解决方案,不使用默认命令:
就用熊猫吧
import pandas as pd
data = [{'employee_name': 'A', 'actual_duration': 14},
{'employee_name': 'A', 'actual_duration': 6},
{'employee_name': 'B', 'actual_duration': 8},
{'employee_name': 'B', 'actual_duration': 22},
{'employee_name': 'C', 'actual_duration': 15}]
result = pd.DataFrame(data).groupby('employee_name').sum()
print(result)
actual_duration
employee_name
A 20
B 30
C 15
如果你想要回口述,你可以这样做
result_dict = result.reset_index().to_dict('records')
print(result_dict)
[{'actual_duration': 20, 'employee_name': 'A'},
{'actual_duration': 30, 'employee_name': 'B'},
{'actual_duration': 15, 'employee_name': 'C'}]
您好,当您提出一个当前状态和期望的结果时,就好像您要求Stack Overflow社区只为您做您的工作一样——我确信这不是您想要的,这也不是Stack Overflow的目的。问这样一个问题的更好方法是展示您的尝试、任何错误输出或收到的错误消息、研究问题、分享您的研究并询问您不了解的部分,这样我们可以帮助您,但您仍然是代码的作者。简单:显示您的代码。您好,谢谢您的回复,这是我从一个巨大的项目中提取的一小段代码,因为它是机密的,我已经尝试了好几天了,我非常需要帮助,我已经尝试过了,它得到了所有东西的总和,因此我在这里问它提示:从集合导入计数器
import pandas as pd
data = [{'employee_name': 'A', 'actual_duration': 14},
{'employee_name': 'A', 'actual_duration': 6},
{'employee_name': 'B', 'actual_duration': 8},
{'employee_name': 'B', 'actual_duration': 22},
{'employee_name': 'C', 'actual_duration': 15}]
result = pd.DataFrame(data).groupby('employee_name').sum()
print(result)
actual_duration
employee_name
A 20
B 30
C 15
result_dict = result.reset_index().to_dict('records')
print(result_dict)
[{'actual_duration': 20, 'employee_name': 'A'},
{'actual_duration': 30, 'employee_name': 'B'},
{'actual_duration': 15, 'employee_name': 'C'}]