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

2024-10-04 01:22:24 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

预期输出:5,因为索引1处的所有值('defg'和'klmno'`,后者最长)。你知道吗


Tags: key字符串列表indexlen字典foobar
3条回答

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

longest_string = len(max((row[index] for row in d.values()), key=len))

如果只需要长度,而不需要字符串本身,则可以在生成器表达式中获取长度:

highest_length = max(len(row[index]) for row in d.values())

演示:

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

但是,您无法避免对字典中的所有值进行迭代。你知道吗

很接近,只需要使用生成器表达式来迭代列表中的所有项。你知道吗

print max(len(max(d[i],key=len)) for i in d)

首先,使用列表提取所有感兴趣的字符串:

xs = [v[index] for v in d.values()]

接下来,把马克斯带到弦的镜头上:

print(max(map(len, xs)))

相关问题 更多 >