确定列表中列的最长字符串长度的最快方法

rag*_*ner 1 python string dictionary

我有一个包含5000个键的字典,其值是列表,我需要快速确定所有字典值中给定索引的最长字符串的长度

index = 1
d = {'foo': ['abc', 'defg'],
     'bar': ['hij', 'klmno']}
#m = len(max(d.values()[index],key=len))?
Run Code Online (Sandbox Code Playgroud)

预期输出:5,因为索引1处的所有值('defg'和'klmno',后者是最长的).

Mar*_*ers 5

您需要使用生成器表达式来提取正确的索引:

longest_string = len(max((row[index] for row in d.values()), key=len))
Run Code Online (Sandbox Code Playgroud)

如果你需要的只是长度,而不是字符串本身,你也可以获得生成器表达式中的长度:

highest_length = max(len(row[index]) for row in d.values())
Run Code Online (Sandbox Code Playgroud)

演示:

>>> index = 1
>>> d = {'foo': ['abc', 'defg'],
...      'bar': ['hij', 'klmno']}
>>> max((row[index] for row in d.values()), key=len)
'klmno'
>>> max(len(row[index]) for row in d.values())
5
Run Code Online (Sandbox Code Playgroud)

但是,您无法逃避迭代字典中的所有值.