相关疑难解决方法(0)

Python是否具有用于字符串自然排序的内置函数?

使用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)

我正在寻找一个行为与第一个类似的排序函数.

python sorting python-3.x

249
推荐指数
9
解决办法
8万
查看次数

自定义Python列表排序

我正在重构我的一些旧代码,并且遇到了这个问题:

alist.sort(cmp_items)

def cmp_items(a, b):
    if a.foo > b.foo:
        return 1
    elif a.foo == b.foo:
        return 0
    else:
        return -1
Run Code Online (Sandbox Code Playgroud)

代码可以工作(我在大约3年前写过它!)但是我无法在Python文档的任何地方找到这个东西,并且每个人都使用它sorted()来实现自定义排序.有人可以解释为什么这有效吗?

python sorting list

76
推荐指数
6
解决办法
9万
查看次数

按升序对目录中的文件名进行排序

我有一个包含jpgs和其他文件的目录,jpgs都有包含数字的文件名.有些文件名可能包含其他字符串.

例如.

01.jpg
Run Code Online (Sandbox Code Playgroud)

或者可能是

Picture 03.jpg
Run Code Online (Sandbox Code Playgroud)

在Python中,我需要按升序排列所有jpgs的列表.以下是此代码段

import os
import numpy as np

myimages = [] #list of image filenames
dirFiles = os.listdir('.') #list of directory files
dirFiles.sort() #good initial sort but doesnt sort numerically very well
sorted(dirFiles) #sort numerically in ascending order

for files in dirFiles: #filter out all non jpgs
    if '.jpg' in files:
        myimages.append(files)
print len(myimages)
print myimages
Run Code Online (Sandbox Code Playgroud)

我得到的就是这个

['0.jpg', '1.jpg', '10.jpg', '11.jpg', '12.jpg', '13.jpg', '14.jpg',
 '15.jpg', '16.jpg', '17.jpg', '18.jpg', '19.jpg', '2.jpg', '20.jpg',
 '21.jpg', '22.jpg', '23.jpg', '24.jpg', …
Run Code Online (Sandbox Code Playgroud)

python sorting

18
推荐指数
3
解决办法
5万
查看次数

Python中的字母数字排序和负数

我有一个相当简单的列表(一个数字后跟一个句子),这里按正确的顺序:

-347 a negative number
-100 another negative number
-25 and again, a negative number
17 some text
25 foo bar
100 two same texts
100 two same texts (almost)
350 a positive number
Run Code Online (Sandbox Code Playgroud)

每次添加新项目时,我都需要对该列表进行排序.

我搜索了SO,发现答案:

在python中排序 - 如何对包含字母数字值的列表进行排序?

我使用的代码是奇特的,它是:

import re
def convert(str):
    return int("".join(re.findall("\d*", str)))

list1.sort(key=convert)
Run Code Online (Sandbox Code Playgroud)

为了更好地解释我的问题,我洗了清单并运行了代码.

结果是:

17 some text
-25 and again, a negative number
25 foo bar
100 two same texts (almost)
100 two same texts
-100 another negative number
-347 a negative number
350 …
Run Code Online (Sandbox Code Playgroud)

python sorting

4
推荐指数
2
解决办法
1404
查看次数

标签 统计

python ×4

sorting ×4

list ×1

python-3.x ×1