如何打印最长的字典值?

时间:2014-05-08 23:23:09

标签: python dictionary count

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

count=0
for values in d.values():
    if len(values)>count:
        count=len(values)
        print(values)

然而,这会打印与' count'相关的所有值。我只想要最大的一个(这是最后一行)。这是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']

如何让它仅打印最后一条(最长的)线?

4 个答案:

答案 0 :(得分:6)

max(d.values(), key=len)

这将打印出dict值中最长的单词列表。我使用了max()函数,该函数采用分配给函数key的{​​{1}}参数(在本例中)。基本上,值为“最大”值的标准现在由len决定。

答案 1 :(得分:3)

受Dilbert的启发,有可能进行简化,无需使用lambda来定义比较值的函数,我们可以利用len返回每个项的长度的事实是决定谁先到谁以及谁是最后的完美钥匙:

print sorted(d.values(), key=len)[-1]

答案 2 :(得分:1)

count = 0
for values in d.values():
    if len(values) > count:
        values_with_largest_count_first_hit = values
print(values_with_largest_count_first_hit)

答案 3 :(得分:0)

print sorted(d.values(), cmp = lambda x, y: cmp(len(x), len(y)))[-1]