我有一个嵌套列表:
nested_list = [['a', 3], ['a', 1], ['a', 5]]
如何遍历此列表,选择具有最大整数值的子列表?
holder = []
for entry in nested_list:
tmp = sublist with max entry[2] value
holder.append(tmp)
我坚持编码第二行。
我有一个嵌套列表:
nested_list = [['a', 3], ['a', 1], ['a', 5]]
如何遍历此列表,选择具有最大整数值的子列表?
holder = []
for entry in nested_list:
tmp = sublist with max entry[2] value
holder.append(tmp)
我坚持编码第二行。
尝试:
max(nested_list, key=lambda x: x[1])
或者
import operator
max(nested_list, key=operator.itemgetter(1))
如果第一项永远是'a'
,你可以这样做
max(nested_list)
如果您愿意深入研究一些类型检查并且您想对任意子列表执行此操作(仅限一个级别。类似 [12, 'a', 12, 42, 'b']),您可以执行类似的操作.
import numbers
max(nested_list, key=lambda x: max(i for i in x
if isinstance(i, numbers.Integral)))
无论如何,如果您不确定 的元素nested_list
实际上是列表,您可以这样做
import collections
max((s for s in nested_list
if isinstance(s, collections.Sequence)),
key=some_key_function)
只需将您自己设计的关键功能或此答案中的其他功能之一传递给它即可。
就lambda x: x[1]
vs.operator.itemgetter(1)
问题而言,我会介绍一下。原则上,itemgetter
应该是一种正确的方法,但我已经看到operator
解决方案在operator
. 我的偏好是itemgetter
如果性能无关紧要(并且可能如果确实如此),但有些人喜欢避免额外的import
.
如果列表像您建议的那样简单:
>>> nested_list = [['a', 3], ['a', 1], ['a', 5], ['a',2]]
>>> k = sorted(nested_list)
>>> k[-1]
['a', 5]
>>>
这是做你想做的吗?
biggest = nested_list[0]
for entry in nested_list:
if entry[1] > biggest[1]:
biggest = entry