首页 > 解决方案 > 基于另一个排序的嵌套列表python对嵌套列表进行排序

问题描述

我有nested list一个list。在第一个嵌套列表中,它有dates,在第二个中,它values对应于日期。我需要对嵌套列表中的日期进行排序。应根据日期对相应的值进行排序。我知道sorted(list)工作。但我不知道如何value根据date. 我希望date类型在string而不是date。帮我解决一些问题。

这是列表:

a = [["2019-10-13","2019-10-12","2019-10-14","2019-10-11"],[10,28,5,37]]

需要输出

a = [["2019-10-11","2019-10-12","2019-10-13","2019-10-14"],[37,28,10,5]]

标签: pythonpython-3.xlistsorting

解决方案


单线解决方案:

list(zip(*sorted(zip(*a), key=lambda x: x[0])))

解释:

  • zip(*a)将每个日期与其值配对
  • 然后我们按对的第一个元素对其进行排序(key是用于排序的函数,x是传递的单个参数 - 在我们的例子中是一对,我们x[0]用来获取日期)
  • 我们分别将其压缩回日期和数字
  • 并将 zip 对象转换为列表

结果:

>>> list(zip(*sorted(zip(*a), key=lambda x: x[0])))
[('2019-10-11', '2019-10-12', '2019-10-13', '2019-10-14'), (37, 28, 10, 5)]

编辑:我完全阅读了你的问题并改变了。我以为你是按值排序日期,而不是相反,哎呀。现在它是正确的(结果是一样的)。


推荐阅读