我在一个列表中有一个字典:
my_list = [{'Name':'John','Age':'50','Job':'NIL'},{'Name':'Sara','Age':'70','Job':'NIL'}]
我想根据年龄是60岁以上还是60岁以下的参数来更改列表中关键Job的值,例如如果年龄低于60岁,则Job值更改为1,并且age是高于60,作业值将更改为0。这是我期望的结果:
my_list = [{'Name':'John','Age':'50','Job':'1'},{'Name':'Sara','Age':'70','Job':'0'}]
答案 0 :(得分:4)
您可以通过简单地遍历字典列表来做到这一点:
for dictionary in my_list:
dictionary['Job'] = '0' if int(dictionary['Age']) > 60 else '1'
结果是:
>>> my_list
[{'Name': 'John', 'Age': '50', 'Job': '1'}, {'Name': 'Sara', 'Age': '70', 'Job': '0'}]
答案 1 :(得分:1)
如果您对使用第3方库感到满意,可以使用Pandas:
import pandas as pd
df = pd.DataFrame(my_list)
df['Job'] = df['Age'].astype(int).le(60).astype(int).astype(str)
res = df.to_dict(orient='records')
[{'Age': '50', 'Job': '1', 'Name': 'John'},
{'Age': '70', 'Job': '0', 'Name': 'Sara'}]
出于某些原因,这是可取的。您正在对布尔数组而不是循环中的三元语句使用向量化操作。对于大数据工作流程,这应该节省时间和内存。