Извлечение значений из списка диктов на основе другого значения в python3 - PullRequest
1 голос
/ 22 апреля 2019

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

list = [
    {'i': 1, 'j': 1, 'diff': 39},
    {'i': 1, 'j': 1, 'diff': 27},
    {'i': 1, 'j': 1, 'diff': 18},
    {'i': 1, 'j': 1, 'diff': 33},
    ...
]

Из этого мне нужно извлечь значения i и j для записи, которая имеет наибольшее значение diff.

Я видел много решений, которые просто извлекут наибольшее diff, но здесь это не то, что нужно. И я могу придумать способы сделать это, которые бы включали в себя циклическое прохождение и сравнение каждого значения с другими по одному, но это не кажется ни эффективным, ни питоническим.

Какой лучший способ сделать это?

1 Ответ

5 голосов
/ 22 апреля 2019

Используйте max с аргументом key, чтобы указать, что вам нужно найти словарь внутри списка, имеющего максимальное значение для ключа 'diff':

lst = [
    {'i': 1, 'j': 1, 'diff': 39},
    {'i': 1, 'j': 1, 'diff': 27},
    {'i': 1, 'j': 1, 'diff': 18},
    {'i': 1, 'j': 1, 'diff': 33}
]

max_dict = max(lst, key=lambda x: x['diff'])

print(max_dict['i'])  # 1
print(max_dict['j'])  # 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...