我有一个字典,其值都是字符串列表,我想打印最长的值(在这种情况下,字符串最多的列表)。我为循环创建了这个:
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']
如何让它仅打印最后一条(最长的)线?
答案 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]