【问题标题】:How do I get the correct result in the list of lists sorting in python [duplicate]如何在python中的列表排序列表中获得正确的结果[重复]
【发布时间】:2016-03-11 11:28:11
【问题描述】:

如何对下面的列表进行排序?

我的结果是:

['10','11','12','7','8','9'],['1','2','3','4','5','6']]

这是我的代码

lst= [['7','10','8','9','11','12'],['3','1','2','4','6','5']]

for i in lst:
    i.sort()
    print(i)

【问题讨论】:

  • 你想要的输出是什么?
  • 只是谷歌如何在 python 中排序列表。 ..你会发现很多关于这个话题的东西
  • @BrianCain 提出了一个非常合理的问题:你得到的输出有什么问题?在我看来,您正在对字符串进行排序,并且您通过对这些字符串进行排序得到了预期的输出。没有什么明显的磨损。您必须告诉我们问题所在。
  • 想一想,你有一个包含 2 个列表的列表,对吧?访问第一个你会做的lst[0] 并访问另一个lst[1]...我把剩下的留给你。

标签: python


【解决方案1】:

使用sorted(list, key=int):

lst= [['7','10','8','9','11','12'],['3','1','2','4','6','5']]

for i in lst:
    i = sorted(i, key=int)
    print(i)

【讨论】:

  • 好吧,以前不知道 :)
【解决方案2】:

这些是字符串对象,对于字符串:

'10' < '7' because `1 < 7`

我想你想要:

>>> [sorted(map(int, i)) for i in lst]
[[1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11, 12]]
>>> 

在排序之前将它们转换为 int 对象。


如果您需要将它们保存在字符串对象中,请将它们隐藏或设置一个键:

>>> [list(map(str, i)) for i in [sorted(map(int, i)) for i in lst]]
[['7', '8', '9', '10', '11', '12'], ['1', '2', '3', '4', '5', '6']]

>>> [sorted(i, key=lambda x: int(x)) for i in lst]
[['7', '8', '9', '10', '11', '12'], ['1', '2', '3', '4', '5', '6']]

【讨论】:

  • 这给了我:[[7, 8, 9, 10, 11, 12], [1, 2, 3, 4, 5, 6]] 而不是 [1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11, 12] 谢谢
猜你喜欢
  • 2012-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-28
  • 2014-10-04
  • 2013-07-12
  • 2013-04-09
相关资源
最近更新 更多