在列表的字典中更改键的值

时间:2018-10-04 11:58:05

标签: python python-3.x list dictionary

我在一个列表中有一个字典:

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'}]

2 个答案:

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

出于某些原因,这是可取的。您正在对布尔数组而不是循环中的三元语句使用向量化操作。对于大数据工作流程,这应该节省时间和内存。