Изменение значения ключа в словаре в списке - PullRequest
0 голосов
/ 04 октября 2018

У меня есть словарь в списке, например:

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

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Если вы довольны использованием сторонней библиотеки, вы можете использовать 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'}]

Существуют конкретные причины, по которым это предпочтительнее.Вы используете векторизованные операции над логическими массивами, а не троичный оператор в цикле.Для рабочих процессов с большими данными это должно быть экономно по времени и памяти.

0 голосов
/ 04 октября 2018

Это можно сделать, просто выполнив итерацию по списку словарей:

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'}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...