当前位置: 代码迷 >> python >> 在列表的字典中更改键的值
  详细解决方案

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

热度:91   发布时间:2023-07-16 09:58:52.0

我在类似列表的字典中:

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

您可以通过简单地遍历字典列表来做到这一点:

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

如果您对使用第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'}]

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

  相关解决方案