使用距离旧字典最长的键和值制作一个新字典,如何同时增加一个变量?

时间:2018-11-25 17:37:11

标签: python dictionary

所以,我有一本字典,里面有一堆键和值,例如

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 :(得分:3)

首先找到最长值的长度

>>> 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']}