【问题标题】:How to print the longest dictionary value?如何打印最长的字典值?
【发布时间】:2018-12-10 00:53:26
【问题描述】:

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

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

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

【问题讨论】:

  • 你在这个问题上花了多长时间?
  • 这是续集of his last question
  • 我花了大约 30 分钟试图找到类似的问题,但不能大多数只是关于如何将长度打印为数字的答案,而不是关于如何打印与其关联的值的答案。我尝试了不同的缩进 print(values) 的方法,但都没有成功。
  • @AdamSmith,继续……你的意思是骗子!?!?!放开猎犬!!
  • @dilbert 这就像暗黑破坏神 1 重来一遍......

标签: python dictionary count


【解决方案1】:
max(d.values(), key=len)

这会从您的 dict 值中打印出最长的单词列表。我使用了max() 函数,它接受一个分配给函数lenkey 参数(在这种情况下)。基本上,值是“最大值”的标准现在由 len 决定。

【讨论】:

【解决方案2】:

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

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

【讨论】:

  • 我不确定我们为什么要对它进行排序。 max 更好。
  • 非常感谢!一旦我将它一直向左凹陷,你的工作就完美了。
  • @user3617808 除非通过实现这一点,您的代码为 O(2n) 但没关系......
  • 哈!我好像忘记了maxkey=
  • 我同意,max 更好,我正要进行编辑,但 Totem 快了一点。
【解决方案3】:
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)

【讨论】:

    【解决方案4】:
    print sorted(d.values(), cmp = lambda x, y: cmp(len(x), len(y)))[-1]
    

    【讨论】:

    • 既然可以使用max(d.values(), key=len),为什么还要对它进行排序?
    • 没错,我忘了maxkey=。我通常不想要一个值(即:最大);习惯的力量。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-13
    • 1970-01-01
    • 2019-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-06
    相关资源
    最近更新 更多