排序此列表的最佳方法是什么?

use*_*734 2 python sorting list sorted

我有以下列表:

my_list = ['name.13','name.1', 'name.2','name.4', 'name.32']
Run Code Online (Sandbox Code Playgroud)

我希望对列表进行排序并按顺序打印出来,就像这样

name.1
name.2
name.4
name.13
name.32
Run Code Online (Sandbox Code Playgroud)

到目前为止我尝试过的是:

print sorted(my_list)

name.1
name.13
name.2
name.32
name.4
Run Code Online (Sandbox Code Playgroud)

sorted()命令显然按字母顺序处理字符串.也许在检测到.第一个之后用数字排序会更好吗?

有没有一个好的方法来正确排序?什么是最有效的方法?我如何应用这个是我有一个元组列表,并希望使用元组的第二个元素对它进行排序?例如:

tuple_list = [('i','name.2'),('t','name.13'),('s','name.32'),('l','name.1'),('s','name.4')]

print tuple_list
'l','name.1'
'i','name.2'
's','name.4'
't','name.13'
's','name.32'
Run Code Online (Sandbox Code Playgroud)

感谢您的帮助,如果您认为可以改进/澄清问题,请一如既往地发表评论.

亚历克斯

jey*_*eyk 8

您可以尝试类似于这个答案:

>>> my_list = ['name.13','name.1', 'name.2','name.4', 'name.32']
>>> sorted(my_list, key=lambda a: (int(a.split('.')[1])))
['name.1', 'name.2', 'name.4', 'name.13', 'name.32']
Run Code Online (Sandbox Code Playgroud)

或者使用元组:

>>> tuple_list = [('i','name.2'),('t','name.13'),('s','name.32'),('l','name.1'),('s','name.4')]
>>> sorted(tuple_list, key=lambda (a,b): (int(b.split('.')[1])))
[('l', 'name.1'), ('i', 'name.2'), ('s', 'name.4'), ('t', 'name.13'), ('s', 'name.32')]
Run Code Online (Sandbox Code Playgroud)

编辑以解释这是做什么的:

该示例将lambda函数传递给sorted分割字符串,然后将第二部分转换为整数.sorted然后使用此整数对列表项进行排序.

此示例在排序时完全忽略点左侧的字符串.如果您还需要按第一部分排序,请告诉我.