Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用旧字典中长度最长的键和值创建新字典,如何同时增加变量?_Python_Dictionary - Fatal编程技术网

Python 使用旧字典中长度最长的键和值创建新字典,如何同时增加变量?

Python 使用旧字典中长度最长的键和值创建新字典,如何同时增加变量?,python,dictionary,Python,Dictionary,所以,我有一本字典,里面有一串键和值,例如 dictionary = {'aety': ['yate', 'yeat', 'yeta'], 'arst': ['sart', 'sart', 'star', 'star', 'stra', 'tars', 'tsar']} 在我的字典中,每个键至少有2个值,因此下面的maxlen=2 我想制作一个新的字典“longest”,它获取的键及其值在它的列表中有最多的项,所以在本例中为“arst” 我写道: maxlen = 2 longest = {

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

dictionary = {'aety': ['yate', 'yeat', 'yeta'], 'arst': ['sart', 'sart', 'star', 'star', 'stra', 'tars', 'tsar']}
在我的字典中,每个键至少有2个值,因此下面的maxlen=2

我想制作一个新的字典“longest”,它获取的键及其值在它的列表中有最多的项,所以在本例中为“arst”

我写道:

maxlen = 2

longest = {k: v for k, v in dictionary.items() if (len(v) > maxlen)}
如果每次len(v)>maxlen都设置maxlen=len(v)(就像查找列表或其他对象的最大值一样),上面的代码将实现我想要的功能,但是我在这里如何实现呢

因此,在这一部分:

if (len(v) > maxlen)
我希望这种情况发生:

len(v) = maxlen
我如何做到这一点,我可以在一行中,而不写一堆不同的行或循环


谢谢

首先查找最长值的长度

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

您可以共享预期的输出吗?@timgeb它只是具有最长长度的键及其值,因此
longest={'arst':['sart','sart','star','star','stra','tars','tsar']}
在这种情况下,如果两个键具有相同数量的元素会怎么样?在这种情况下你想要两个吗?@Felix是的,两个都要。好的,然后@timgeb把答案贴到了alreadyThanks上。这会改变我当前的字典吗?如中所述,在找到最大长度并使用它之前,我是否仍然可以打印出包含所有旧值的旧词典?@Mandingo您的旧
词典
没有变异,我正在用结果构建一个新词典。我喜欢
max\u len2=max(map(len,dictionary.values())
甚至更好;-)@菲利克斯,我也喜欢。就性能而言,我对它进行了计时,似乎没有任何明显的差异。