我如何比较列表?

时间:2016-01-14 17:25:32

标签: python list

我之前问了一个关于如何打印最长len的列表的问题,并且我学会了如何使用max函数。 我现在的问题是:

somelist = [[['yes', 'yes', 'yes'], ['maybe']], [['yes', 'yes'], ['maybe']]]

我只想比较"yes"列表。有人可以帮忙吗? 如果我使用max(somelist, key=len),它将比较整个"是和可能"在两种情况下都有len 2的列表。

1 个答案:

答案 0 :(得分:1)

假设主列表的子列表始终采用[列表中的,列表 - 可能]格式,您可以执行此操作:

>>> mainlist = [[['yes', 'yes', 'yes'], ['maybe']], [['yes', 'yes'], ['maybe']]]
>>> longest = max(mainlist, key=lambda sublist: len(sublist[0]))
>>> longest
[['yes', 'yes', 'yes'], ['maybe']]

你得到的错误信息是有道理的:你必须传递一个可调用的key;但是,len(somelist[x][0]intlen是一个可调用的,这就是为什么当你将它用作key时没有得到异常的原因,尽管它没有给出你想要的答案。