在字典列表/数组中添加元素

时间:2020-05-19 18:58:57

标签: python list dictionary

我有以下代码,我想在其中计算销售部门的工资总和,但似乎有错误

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)

4 个答案:

答案 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']

如果您仍然遇到问题,请复制错误以提供所有线索!