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())
甚至更好;-)@菲利克斯,我也喜欢。就性能而言,我对它进行了计时,似乎没有任何明显的差异。