Добавление определенных полей словаря, если применяется условие - PullRequest
0 голосов
/ 19 мая 2018

Итак, у меня есть 2 списка словарей в python (2.7), и я хочу обновить каждый словарь в списке, если условие выполняется.

Пример:

first= 
[
    {'name': 'John', 'last_name': 'Doe', 'age':'27'},
    {'name': 'Jack', 'last_name': 'Sparrow', 'age':'26'}
]
second = 
[
    {'full_name': 'John Doe', 'height':130},
    {'full_name': 'Donkey Kong', 'height':156},
    {'full_name': 'Jack Sparrow', 'height':180}
]

Теперь я хочуобновить первый dict, если name + last_name равно full_name, и добавить к нему параметр высоты.

Это прекрасно работает, но очень уродливо и не очень красиво выглядит, если у меня десять полей вроде 'height ', чтобы добавить:

 for i in first:
    for k in second:
        if (i['name'] + ' ' + i['last_name'] == k['full_name']):
            i['height'] = k['height']

Любой хороший способ сделать это "Pythonic" способом?

Большое спасибо!

1 Ответ

0 голосов
/ 19 мая 2018

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

second_dict = {i['full_name']: i['height'] for i in second}

Затем используйте цикл for:

for item in first:
    key = item['name'] + ' ' + item['last_name']
    if key in second_dict:
        item['height'] = second_dict[key]

Результат:

print(first)

[{'age': '27', 'height': 130, 'last_name': 'Doe', 'name': 'John'},
 {'age': '26', 'height': 180, 'last_name': 'Sparrow', 'name': 'Jack'}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...