如何打印最长的字典值?

use*_*808 0 python dictionary count

我有一个字典,其值是所有字符串列表,我想打印最长的值(在这种情况下,具有最多字符串的列表).我为循环创建了这个:

count=0
for values in d.values():
    if len(values)>count:
        count=len(values)
        print(values)
Run Code Online (Sandbox Code Playgroud)

但是,这会打印与"计数"相关的所有值.我只想要最大的一个(这是最后一行).这是for循环打印的示例:

['gul', 'lug']
['tawsed', 'wadset', 'wasted']
['lameness', 'maleness', 'maneless', 'nameless', 'salesmen']
['pores', 'poser', 'prose', 'repos', 'ropes', 'spore']
['arrest', 'rarest', 'raster', 'raters', 'starer', 'tarres', 'terras']
['carets', 'cartes', 'caster', 'caters', 'crates', 'reacts', 'recast', 'traces']
['estrin', 'inerts', 'insert', 'inters', 'niters', 'nitres', 'sinter', 'triens', 'trines']
['least', 'setal', 'slate', 'stale', 'steal', 'stela', 'taels', 'tales', 'teals', 'tesla'] 
['apers', 'apres', 'asper', 'pares', 'parse', 'pears', 'prase', 'presa', 'rapes', 'reaps', 'spare', 'spear']
Run Code Online (Sandbox Code Playgroud)

如何让它仅打印最后(最长)的行?

Jan*_*sky 6

受到 Dilbert 的启发,有一个简化的机会,不需要使用lambda定义比较值的函数,我们可以利用这样一个事实,即len返回每个项目的长度,这是决定谁先到谁最后的完美关键:

print sorted(d.values(), key=len)[-1]
Run Code Online (Sandbox Code Playgroud)

  • 我不知道为什么我们要排序这个。`max` 更好。 (2认同)

Tot*_*tem 6

max(d.values(), key=len)
Run Code Online (Sandbox Code Playgroud)

这将打印出dict值中最长的单词列表.我使用了max()函数,它接受一个key分配给函数的参数len(在本例中).基本上,值为"最大"值的标准现在由它决定len.

  • 这就是我在[他的最后一个问题]上提出的建议(http://stackoverflow.com/questions/23553157/how-to-count-values-in-dictionary-and-print-the-key-and-value-associated-与次) (4认同)