我有一个 Python 列表,我想根据两个类别进行排序。排序后的列表应该在最后一个位置具有最小的数字,并且第一个元素必须大于 400。我想从列表中返回前 3 个。
x_list = [['422', '324', '733443'], ['342', '654', '674335'],
['953', '456', '828854'], ['345', '886', '446678'],
['3224', '533', '654333'], ['7545', '5567', '369990']]
它应该像这样返回:
result = [['7545', '5567', '369990'], ['3224', '533', '654333'], ['422', '324', '733443']]
我尝试使用以下代码,但无法结合这两个条件对列表进行排序:
result= []
result += sorted(x_list, key=lambda x: int(x[-1]))[:3]
谁能帮我解决这个问题?非常感谢!!
我将首先过滤列表以仅保留第一个元素大于 400 的值,然后按照您最初的方式根据最后一个元素按升序对最终结果进行排序。例如:
x_list = [['422', '324', '733443'], ['342', '654', '674335'],
['953', '456', '828854'], ['345', '886', '446678'],
['3224', '533', '654333'], ['7545', '5567', '369990']]
x_list2 = [x for x in x_list if int(x[0]) > 400]
x_list2.sort(key=lambda x: int(x[2]))
x_list2 = x_list2[:3]
print(x_list2)
# [['7545', '5567', '369990'], ['3224', '533', '654333'], ['422', '324', '733443']]
或者您也可以在一个步骤中进行排序和过滤:
x_list = [['422', '324', '733443'], ['342', '654', '674335'],
['953', '456', '828854'], ['345', '886', '446678'],
['3224', '533', '654333'], ['7545', '5567', '369990']]
x_list2 = sorted((x for x in x_list if int(x[0]) > 400), key=lambda x: int(x[2]))[:3]
print(x_list2)
# [['7545', '5567', '369990'], ['3224', '533', '654333'], ['422', '324', '733443']]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句