使用Python 3.x,我有一个字符串列表,我想对其执行自然的字母排序.
自然排序: Windows中文件的排序顺序.
例如,以下列表是自然排序的(我想要的):
['elm0', 'elm1', 'Elm2', 'elm9', 'elm10', 'Elm11', 'Elm12', 'elm13']
Run Code Online (Sandbox Code Playgroud)
这是上面列表的"排序"版本(我有):
['Elm11', 'Elm12', 'Elm2', 'elm0', 'elm1', 'elm10', 'elm13', 'elm9']
Run Code Online (Sandbox Code Playgroud)
我正在寻找一个行为与第一个类似的排序函数.
我想知道如何按内部数字对字符串进行排序.
例如,我有:
hello = " hola %d" % (number_from_database)
bye = "adios %d" % (number_from_database_again)
Run Code Online (Sandbox Code Playgroud)
我想用数字对它们进行排序,即使它发生了变化.
我有一个相同类型的对象列表
lis = [<obj>, <obj>, <obj>]
Run Code Online (Sandbox Code Playgroud)
我希望通过object属性自然排序name.我试过了
sortedlist = sorted(lis, key=lambda x: x.name)
Run Code Online (Sandbox Code Playgroud)
然而,这将列表排序为
A1
A10
A2
Run Code Online (Sandbox Code Playgroud)
不是我想要的格式
A1
A2
A10
Run Code Online (Sandbox Code Playgroud)
我已经尝试修改代码来排序字母数字字符串,但我不能让它适用于对象列表.
我有这个文件列表:
1.jpg, 2.jpg, ..., 10.jpg, ...
Run Code Online (Sandbox Code Playgroud)
如果我做一个python os.listdir(".")我列出了所有文件,但按字母顺序排列如下:
[1.jpg, 10.jpg, 11.jpg, ..., 2.jpg, 20.jpg....]
Run Code Online (Sandbox Code Playgroud)
但我希望它们按数值排序
[1.jpg, 2.jpg ,...10 ,11 ,12... ]
Run Code Online (Sandbox Code Playgroud)
如何重新排序列表以完成此操作?
TX