You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何将列表拆分为多个参数传入函数实现字典列表多键排序

解决方法

你需要使用Python的序列解包运算符(*)来拆分元组/列表,把其中的元素作为独立的位置参数传入operator.itemgetter即可。

原来的代码错误点是你直接把整个元组items作为单个参数传给了operator.itemgetter,这会导致它尝试从字典中获取整个元组对应的键,不符合预期逻辑。

修正后的完整函数代码:

import operator

def order_list_of_dicts_by_keys(list_to_be_sorted, keys_strings):       
    sorted_list = sorted(list_to_be_sorted, key=operator.itemgetter(*keys_strings))
    return sorted_list

调用测试:

list_to_be_sorted = [
    {'name':'Homer', 'age':39, 'height':170}, 
    {'name':'Milhouse', 'age':10, 'height':110}, 
    {'name':'Bart', 'age':10, 'height':112} 
]
print(order_list_of_dicts_by_keys(list_to_be_sorted, ['age', 'name']))

输出结果:

[{'name': 'Bart', 'age': 10, 'height': 112}, {'name': 'Milhouse', 'age': 10, 'height': 110}, {'name': 'Homer', 'age': 39, 'height': 170}]

补充说明:

  • *keys_strings的作用就是把keys_strings列表里的每个元素拆成独立的位置参数,等价于手动写operator.itemgetter('age', 'name')
  • 不需要额外把输入的键列表转成元组,列表也可以直接用*解包

内容的提问来源于stack exchange,提问作者Tms91

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 17:24:02