Получить список с большим количеством элементов в словаре списков

Я уже видел несколько постов о словаре списков, но ни один из них не мог мне помочь до сих пор. У меня есть словарь списков, как:

dict = {'a': [1,5,4], 'b': [4], 'c': [1,5,4,3,8], 'd': [1,4]}

Теперь я хочу в цикле получить список с большим количеством элементов, в этом случае первым списком будет "c", а затем удалите этот список и снова запустите цикл. Я начал с добавления ключей и значений "dict" в массив (я не знаю, нужно ли это):

for key, value in dict.items():
    array_keys.append(str(key))
    array_values.append(dict[key])

Затем я попытался запустить цикл и получить список с большим количеством элементов, которые я использовал:

max_list = max([len(i) in array_values])

При этом я получаю "5", то есть максимальное количество элементов значений в словаре. Я хочу получить название списка, "с". Вы можете мне помочь?

1 ответ

Решение

Использование max() с ключевой функцией:

max(dictobject, key=lambda k: len(dictobject[k]))

Это возвращает ключ, для которого значение является самым длинным.

Обычно max() будет сравнивать значения итерируемой вами переменной, возвращая элемент, который был отсортирован последним. Если вы передадите ключевую функцию, она вернет значение где key(value) будет сортировать в прошлом. Здесь функция key возвращает длину значения, связанного с ключом словаря.

Другие вопросы по тегам