使用sorted()[重复]的列表错误序列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用sorted()[重复]的列表错误序列相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

我有一些图像,我从网址生成随机图片。然后我尝试对它们进行排序以正确使用它,但它们的排序是混乱的。欣赏任何建议或指出我错过的东西

代码(图像列表生成):

def image_downloader():

    image_url = 'url'

    for count in tqdm(range(20)):
        image_data = requests.get(image_url).content

        with open(f'image_{count}.jpg', 'wb') as handler:
            handler.write(image_data)

        sleep(0.5)

和我的排序(试图通过生成的图片“id”得到它):

local_folder_content = os.listdir('.')

images_list = list((image for image in local_folder_content if image.endswith('.jpg')))

pprint((sorted(images_list, key=lambda x: x[:-4].split('_')[1])))

结果(排序混乱):

['image_0.jpg',
 'image_1.jpg',
 'image_10.jpg',
 'image_11.jpg',
 'image_12.jpg',
 'image_13.jpg',
 'image_14.jpg',
 'image_15.jpg',
 'image_16.jpg',
 'image_17.jpg',
 'image_18.jpg',
 'image_19.jpg',
 'image_2.jpg',
 'image_3.jpg',
 'image_4.jpg',
 'image_5.jpg',
 'image_6.jpg',
 'image_7.jpg',
 'image_8.jpg',
 'image_9.jpg']
答案

你可以尝试这样的事情:

images_list.sort(key= lambda i: int(i.lstrip('image_').rstrip('.jpg')))
另一答案

您必须生成具有两个(或更多)数字的所有文件名:

with open(f'image_{str(count).zfill(2)}.jpg', 'wb') as handler:

输出:

image_01.jpg
image_02.jpg
image_04.jpg

在这种情况下,您的图像将被正确排序。

以上是关于使用sorted()[重复]的列表错误序列的主要内容,如果未能解决你的问题,请参考以下文章

播放随机声音而不重复

我无法从 firebase 获取下载网址()。请任何人帮助这是我的代码和错误。 (我正在使用片段)[重复]

python 学习笔记 -- 数据结构与算法 希尔排序 Shell Sort

在片段java类中使用“this”和getLastSignedInAccount时出现错误[重复]

如何使用对象列表在片段中实现newinstace模式[重复]

如果已删除枚举项,则将Json反序列化回列表或枚举会导致错误[重复]