python - 如何在列表中组合排序参数?
问题描述
我有 1 个这样的列表:
list = [{'day':'1','month':'2'},{'day':'3','month':'3'},{'day':'2','month':'6'},{'day':'1','month':'1'}]
我想先按月和后天对其进行排序,例如(day=1 and month=2)>(day=5 and month=1)。
上述列表的输出将变为:
list = [{'day':'1','month':'1'},{'day':'1','month':'2'},{'day':'3','month':'3'},{'day':'2','month':'6'}]
我试过了
sorted(list, key= lambda i: i['month'+'day'])
但这不起作用。
解决方案
您需要使用tuple
要排序的字段指定 a。另请注意,您需要将值转换为 int,否则顺序将是字典顺序的,这意味着例如'12' < '9'
. 所以:
l = [{'day':'1','month':'2'},{'day':'3','month':'3'},{'day':'2','month':'6'},
{'day':'1','month':'1'}]
sorted(l, key=lambda x: (int(x['month']), int(x['day'])))
[{'day': '1', 'month': '1'},
{'day': '1', 'month': '2'},
{'day': '3', 'month': '3'},
{'day': '2', 'month': '6'}]
推荐阅读
- sql - 如何将管道从 Azure 数据工厂 V2 移动到另一个(相同的资源组)?
- python - 如果以文本文件中的数值开头,则查找行的总和
- assembly - 英特尔引脚工具:无法使用 icc 识别用户定义的函数
- kotlin - 在 Kotlin 中构建 hamcrest 地图匹配器的问题
- objective-c - 使用 NSMagnificationGestureRecognizer 缩放 NSScrollView
- cordova - Ionic 无法构建或运行应用程序
- ignite - 点燃内存消耗 vs Redis
- bash - 如何在 shell 脚本中获取动态路径?
- c# - 使用 ajax 调用的 setInterval 不会触发成功回调,直到另一个表单完成提交
- javascript - 分组 div 元素