Создание нового словаря с использованием ключа и значения самой длинной длины из старого, как увеличить переменную одновременно? - PullRequest
0 голосов
/ 25 ноября 2018

Итак, у меня есть словарь с кучей ключей и значений, например,

dictionary = {'aety': ['yate', 'yeat', 'yeta'], 'arst': ['sart', 'sart', 'star', 'star', 'stra', 'tars', 'tsar']}

Каждый ключ имеет как минимум 2 значения в моем словаре, следовательно, maxlen = 2 ниже.

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

Я написал это:

maxlen = 2

longest = {k: v for k, v in dictionary.items() if (len(v) > maxlen)}

Приведенный выше код будет делать то, что я хочу, если мне удастся установить maxlen = len (v) каждый раз, когда len (v)> maxlen (так же, как обычно находить максимум в списке или что-то в этом роде), но как это сделать?Я делаю это здесь?

Итак, на этой части:

if (len(v) > maxlen)

Я хочу, чтобы это произошло:

len(v) = maxlen

Как мне это сделать и могу ли я соответствоватьчто в этой строке без написания связок разных строк или циклов?

Спасибо

1 Ответ

0 голосов
/ 25 ноября 2018

Сначала найдите длину самых длинных значений

>>> dictionary = {'aety': ['yate', 'yeat', 'yeta'], 'arst': ['sart', 'sart', 'star', 'star', 'stra', 'tars', 'tsar']}
>>> max_len = len(max(dictionary.values(), key=len)) # 7
>>> max_len
7

, а затем отфильтруйте ваш словарь.

>>> {k:v for k,v in dictionary.items() if len(v) == max_len}
{'arst': ['sart', 'sart', 'star', 'star', 'stra', 'tars', 'tsar']}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...