我之前问了一个关于如何打印最长len的列表的问题,并且我学会了如何使用max函数。 我现在的问题是:
somelist = [[['yes', 'yes', 'yes'], ['maybe']], [['yes', 'yes'], ['maybe']]]
我只想比较"yes"
列表。有人可以帮忙吗?
如果我使用max(somelist, key=len)
,它将比较整个"是和可能"在两种情况下都有len 2的列表。
答案 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]
是int
。 len
是一个可调用的,这就是为什么当你将它用作key
时没有得到异常的原因,尽管它没有给出你想要的答案。