问题描述
我在类似列表的字典中:
my_list = [{'Name':'John','Age':'50','Job':'NIL'},{'Name':'Sara','Age':'70','Job':'NIL'}]
我想根据以下参数更改列表中键Job的值:年龄是大于还是小于60,例如年龄小于60,作业值更改为1,而年龄大于60,则作业值更改为0。这是我期望的结果:
my_list = [{'Name':'John','Age':'50','Job':'1'},{'Name':'Sara','Age':'70','Job':'0'}]
1楼
您可以通过简单地遍历字典列表来做到这一点:
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'}]
2楼
如果您对使用第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'}]
出于某些原因,这是可取的。 您正在对布尔数组而不是循环中的三元语句使用向量化操作。 对于大数据工作流程,这应该节省时间和内存。