列表推导式中包括字典时,如何将结果写回至字典中?

dict1={'姓名':'张三','工资':5000}
dict2={'姓名':'李四','工资':8000}
dict3={'姓名':'王五','工资':3250}
dict4={'姓名':'赵六','工资':6500}
lst=[dict1,dict2,dict3,dict4]

result=[x['工资']+200 if x['工资']>=5000 else x['工资']+500 for x in lst]

结果是[5200, 8200, 3750, 6700],请问如何将结果写回到原来的每个字典中?

可以通过索引的方式来写回到原来的字典中。例如:

for i, x in enumerate(lst):
    lst[i]['工资'] = result[i]

然后 lst 列表中就会包含修改后的字典了。例如:

print(lst)

输出结果为:

[{'姓名': '张三', '工资': 5200},  {'姓名': '李四', '工资': 8200},  {'姓名': '王五', '工资': 3750},  {'姓名': '赵六', '工资': 6700}]

也可以直接在列表推导式中进行修改,例如:

lst = [x.update({'工资': result[i]}) for i, x in enumerate(lst)]

这样就可以直接将修改后的字典写回到原来的列表中了。

下面是完整的代码示例:

dict1={'姓名':'张三','工资':5000}
dict2={'姓名':'李四','工资':8000}
dict3={'姓名':'王五','工资':3250}
dict4={'姓名':'赵六','工资':6500}
lst=[dict1,dict2,dict3,dict4]
result=[x['工资']+200 if x['工资']>=5000 else x['工资']+500 for x in lst]

# 通过索引的方式将修改后的值写回到原来的字典中
for i, x in enumerate(lst):
    lst[i]['工资'] = result[i]

# 输出结果
print(lst)