gpt4 book ai didi

python - 如何从值元组创建 lambda 函数

转载 作者:行者123 更新时间:2023-11-30 22:05:40 27 4
gpt4 key购买 nike

基本目标是根据内部列表中的字段对列表列表进行排序。所以我有下面的Python代码来做到这一点:

import sys

def sort_cleaned_data(data, fields=None):
if not isinstance(fields, tuple):
raise ValueError("Argument to the function has to be a tuple")
else:
if all(list(map(lambda x:isinstance(x, int), fields))):
sorted_data = sorted(data, key=lambda x:(x[2],x[1]))
return sorted_data
else:
raise ValueError("All the values inside the fields tuple have to be integers")


data = [
["John", 34, 2],
["Ashley", 30, 2],
["Peter", 28, 5],
["Bill", 29, 5],
["Jennifer", 65, 4],
["Laura", 33, 3]
]
try:
sorted_data = sort_cleaned_data(data, fields=(2,1))
except ValueError as e:
print(e)
sys.exit(1)

for d in sorted_data:
print(d)

在函数 sort_cleaned_data 中,我有字段元组,其中包含要排序的内部数组的字段。所以我必须根据字段列表动态生成函数:key=lambda x:(x[2],x[1])

我认为这是Python中eval的情况,但我不知道如何做到这一点。有人可以帮我吗?

提前非常感谢。

最佳答案

使用理解:

sorted(data, key=lambda x: tuple(x[i] for i in fields))

现在,只要 x(内部列表)有足够的元素不会引发 IndexError,fields 的大小和值可以是任意的。

关于python - 如何从值元组创建 lambda 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52924905/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com