Максимальное значение в списке словаря Python, которое стоит вторым по списку
мой код не работает: если первый индекс больше чем у других ключей списков, то выводит его в ответ
d = {i:[0,0] for i in range(37)}
for kk in d.values():
kk[0]+=1
d[30][0]=0
d[32][1]+=1676
d[30][1]+=43355
общее=max(d.values())[1]
dd = {jj:zz for jj, zz in d.items() for f in zz if f == max(d.values())[1]}
print(dd)
Ответы (3 шт):
Автор решения: MarianD
→ Ссылка
max(lst[1] for lst in d.values())
Объяснение:
Мы можем это сделать это постепенно:
Сначала создаем список из вторых элементов:
second_elements = [lst[1] for lst in d.values()]Затем применим функцию
max()
(и / илиmin(), чего вам надо):max_of_second_elements = max(second_elements) # или min вместо max
Теперь почти то же самое в одном шаге
без использования временной переменной (y меня
second_elements)с возможным удалением квадратных скобок (т.е. генератор вместо списка):
max_of_second_elements = max(lst[1] for lst in d.values())
Автор решения: MarianD
→ Ссылка
С применением numpy:
import numpy as np # pip install numpy
d_array = np.array([e for e in d.values()]) # Создание матрицы из списков
d_array[:,1].max()
Т.е. применим метод .max() ко второму столбцу матрицы.