Найти минимум списка словарей по определенному ключу - PullRequest
0 голосов
/ 08 декабря 2018

У меня есть это:

[{'prisonniers': [], 'sécurité': '47'},{'prisonniers': [],'sécurité':'92'}, {'prisonniers': [], 'sécurité': '38'}]

И мне нужно поместить в другой список диктовку с самой низкой «безопасностью», в данном случае мне нужно это:

myList = [{'prisonniers': [], 'sécurité': '38'}]

Ответы [ 4 ]

0 голосов
/ 08 декабря 2018

Аналогично ответу Мехрада-Педрамфара , но я предпочитаю использовать itemgetter из модуля operator для удобства чтения.

Настройка:

from operator import itemgetter
data = [{'prisonniers': [], 'sécurité': '47'},{'prisonniers': [],'sécurité':'92'}, {'prisonniers': [], 'sécurité': '38'}]

Решение:

>>> min(data, key=itemgetter('sécurité'))
{'prisonniers': [], 'sécurité': '38'}
0 голосов
/ 08 декабря 2018

Для этого можно использовать min, задав в качестве ключа securite минимальное значение для поиска:

inList = [{'prisonniers': [], 'securite': '47'},{'prisonniers': [],'securite':'92'}, {'prisonniers': [], 'securite': '38'}]

value = min(inList, key=lambda elem: elem['securite'])
print(value)

Выход:

{'prisonniers': [], 'securite': '38'}

В приведенном выше примереЯ заменил é на e, но и в твоем случае он будет работать нормально.

0 голосов
/ 08 декабря 2018

Вы можете использовать приведенный ниже код: Шаг: Найдите наименьший «sécurité», используя min([ i['sécurité'] for i in input_list]), затем снова используйте понимание списка print соответствующий «sécurité» с минимальным значением:

aa = [print(i) for j in input_list if j['sécurité'] == min([ i['sécurité'] for i in input_list])]
0 голосов
/ 08 декабря 2018

min функция принимает аргумент с именем key, она найдет минимум итерируемого на основе key, который может быть вызван.Итак, попробуйте это:

l = [{'prisonniers': [], 'sécurité': '47'},{'prisonniers': [],'sécurité':'92'}, {'prisonniers': [], 'sécurité': '38'}]

min(l, key=lambda x:x['sécurité'])

вывод будет

{'prisonniers': [], 'sécurité': '38'}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...