如何将变量列表作为参数 "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 处定义的函数并将其作为输入:

  1. 一个list_to_be_sorted

  2. 变量列表,其中每个变量值将作为参数传递给 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))