如何将变量列表作为参数 "list" 传递给函数?
How to pass a list of variables to a function as a "list" of arguments?
我正在尝试构建一个函数,该函数按一个或多个键对字典列表进行排序,并将键列表作为变量(因此,作为字符串列表)传递给函数。
按照 this thread,我安排了几行代码,按关键字对字典列表进行排序:
import operator
newlist = sorted( list_to_be_sorted, key=operator.itemgetter('key1','key2') )
示例:
list_to_be_sorted = [
{'name':'Homer', 'age':39, 'height':170},
{'name':'Milhouse', 'age':10, 'height':110},
{'name':'Bart', 'age':10, 'height':112}
]
newlist = sorted( list_to_be_sorted, key=operator.itemgetter('age','name') ) # My_line
print(newlist)
[{'name': 'Bart', 'age': 10, 'height':112},
{'name': 'Milhouse', 'age': 10, 'height':110},
{'name': 'Homer', 'age': 39, 'height':170}]
现在我要构建的是一个函数,它调用在 My_line 处定义的函数并将其作为输入:
一个list_to_be_sorted
变量列表,其中每个变量值将作为参数传递给 My_line
函数中的 key=operator.itemgetter
所以我希望该函数定义如下:
def order_list_of_dicts_by_keys( list_to_be_sorted, keys_list ):
pass
在这种情况下,keys_list = ['age','name']
所以我运行进入了这个问题,即:
How to pass a list of variables to a function as a
"list" of arguments ?
这是我试过的:
import operator
def order_list_of_dicts_by_keys(list_to_be_sorted, keys_strings):
items = tuple(keys_strings)
sorted_list = sorted(list_to_be_sorted, key=operator.itemgetter( items )
return sorted_list
如何“去除”项目元组的括号,以便将正确的表达式传递给 key=operator.itemgetter
?
已解决
不可能“去除”元组的括号,但可以使用拆包运算符 (*
)
所以函数变为:
import operator
def order_list_of_dicts_by_keys(list_to_be_sorted, keys_list):
items = tuple(keys_list)
return sorted(list_to_be_sorted, key=operator.itemgetter(*items))
我正在尝试构建一个函数,该函数按一个或多个键对字典列表进行排序,并将键列表作为变量(因此,作为字符串列表)传递给函数。
按照 this thread,我安排了几行代码,按关键字对字典列表进行排序:
import operator
newlist = sorted( list_to_be_sorted, key=operator.itemgetter('key1','key2') )
示例:
list_to_be_sorted = [
{'name':'Homer', 'age':39, 'height':170},
{'name':'Milhouse', 'age':10, 'height':110},
{'name':'Bart', 'age':10, 'height':112}
]
newlist = sorted( list_to_be_sorted, key=operator.itemgetter('age','name') ) # My_line
print(newlist)
[{'name': 'Bart', 'age': 10, 'height':112},
{'name': 'Milhouse', 'age': 10, 'height':110},
{'name': 'Homer', 'age': 39, 'height':170}]
现在我要构建的是一个函数,它调用在 My_line 处定义的函数并将其作为输入:
一个
list_to_be_sorted
变量列表,其中每个变量值将作为参数传递给 My_line
函数中的key=operator.itemgetter
所以我希望该函数定义如下:
def order_list_of_dicts_by_keys( list_to_be_sorted, keys_list ):
pass
在这种情况下,keys_list = ['age','name']
所以我运行进入了这个问题,即:
How to pass a list of variables to a function as a "list" of arguments ?
这是我试过的:
import operator
def order_list_of_dicts_by_keys(list_to_be_sorted, keys_strings):
items = tuple(keys_strings)
sorted_list = sorted(list_to_be_sorted, key=operator.itemgetter( items )
return sorted_list
如何“去除”项目元组的括号,以便将正确的表达式传递给 key=operator.itemgetter
?
已解决
不可能“去除”元组的括号,但可以使用拆包运算符 (*
)
所以函数变为:
import operator
def order_list_of_dicts_by_keys(list_to_be_sorted, keys_list):
items = tuple(keys_list)
return sorted(list_to_be_sorted, key=operator.itemgetter(*items))