我有以下代码,我想在其中计算销售部门的工资总和,但似乎有错误
ang = [{'Id':1, 'Name':'John', 'Wage':1000, 'Dept':'Sales'},
{'Id':2, 'Name':'Greg', 'Wage':1200, 'Dept':'Sales'},
{'Id':3, 'Name':'Mary', 'Wage':3000, 'Dept':'Mgmt'},
{'Id':4, 'Name':'Paul', 'Wage':900, 'Dept':'Sales'},
{'Id':5, 'Name':'Lily', 'Wage':1200, 'Dept':'Finance'} ]
d='Sales'
s = 0
for i in ang:
if(i['Dept']=='Sales')
s=s+i['Wage']
print('Total wage for sales departament.', d, '=', s)
答案 0 :(得分:0)
“工资”键不在列表中的第一个元素上(引发键错误),请使用.get()方法查找“工资”并返回其值或返回默认值求和。
s = 0
for i in ang:
if i.get('Dept') == 'Sales':
s += i.get('Wage', 0) # zero as default value
一种简化的方法:
s = sum([i.get('Wage', 0) for i in ang if i.get('Dept') == 'Sales'])
答案 1 :(得分:0)
由于最上面的条目没有Wage
键,因此在使用i['Wage']
时很可能会收到KeyError。请改用i.get(<key>, <default>)
。
答案 2 :(得分:0)
列表中的第一个条目指定Salariu
而不是Wage
。如果您解决了这个问题,就可以这样做:
>>> ang = [{'Id':1, 'Name':'John', 'Wage':1000, 'Dept':'Sales'},
... {'Id':2, 'Name':'Greg', 'Wage':1200, 'Dept':'Sales'},
... {'Id':3, 'Name':'Mary', 'Wage':3000, 'Dept':'Mgmt'},
... {'Id':4, 'Name':'Paul', 'Wage':900, 'Dept':'Sales'},
... {'Id':5, 'Name':'Lily', 'Wage':1200, 'Dept':'Finance'} ]
>>> d = "Sales"
>>> print(f"Total wage for {d} department = {sum(a['Wage'] for a in ang if a['Dept'] == d)}")
Total wage for Sales department = 3100
答案 3 :(得分:0)
假设ID1中的“ Salariu”是有意的,则代码应执行您想要的操作。
if语句上似乎缺少一个冒号(:)
if(i['Dept']=='Sales'):
s=s+i['Wage']
如果您仍然遇到问题,请复制错误以提供所有线索!