Py学习  »  h4z3  »  全部回复
回复总数  2
5 年前
回复了 h4z3 创建的主题 » 基于另一个排序嵌套列表python对嵌套列表进行排序

单线解决方案:

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)]

编辑:我把你的问题读了一遍,改了。我以为你是按值来排序,而不是相反,哎呀。现在它是正确的(结果是一样的)。

6 年前
回复了 h4z3 创建的主题 » 在python中,只在双引号后拆分字符串

正如我在评论中所说,您可以在多个分隔符处拆分。逗号在引号和外部都有一个,但我们可以在 ", (添加了一个空格,这样我们就不必删除它;)

然后我们加上缺少的报价:

original = '"BLAX", "BLAY", "BLAZ, BLUBB", "BLAP"'
[s if s.endswith('"') else s+'"' for s in original.split('", ')]

输出: ['"BLAX"', '"BLAY"', '"BLAZ, BLUBB"', '"BLAP"']

这种方法不使用正则表达式,因此速度更快。你也不需要玩什么正则表达式适合你的情况(我一般喜欢正则表达式,但我更喜欢智能拆分和操作)。