第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

按順序組織列表中的元素

按順序組織列表中的元素

忽然笑 2022-11-29 14:52:11
我正在加載 700 張圖像,我需要它們按照名稱的順序排列(_DCS6825_01、_DCS6825_02...),但是當嘗試這樣做時,在圖像 _DCS6825_10 之后,下一個要加載的是圖像 _DCS6825_100,然后是 _DCS6825_101圖片 11(_DCS6825_11),我該如何解決。這是我的代碼:from PIL import Imageimport globimport matplotlib.pyplot as pltimport ospath = r'C:\Users\juanc\Desktop\prueba origen\restich\\'image_list = []for filename in glob.glob(path+'*.jpg'):    im=Image.open(filename)    image_list.append(im)sortedlist = sorted(image_list)print(sortedlist)排序產(chǎn)生錯誤:TypeError: '<' not supported between instances of 'JpegImageFile' and 'JpegImageFile'謝謝您的幫助
查看完整描述

1 回答

?
幕布斯7119047

TA貢獻1794條經(jīng)驗 獲得超8個贊

你在這里有兩個問題:


首先是您試圖自己對圖像進行排序,而不是使用它們的文件名。正如評論中所指出的,您應(yīng)該首先對列表進行排序,然后加載圖像:


path = r'...'

image_list = glob.glob(path + '*.jpg')

sortedlist = sorted(image_list)

loaded_images = []

for filename in image_list:

    im = Image.open(filename)

    loaded_images.append(im)


第二個是當您對列表進行排序時,sorted使用文件名,從而使用字母順序,而不是像您想要的那樣使用文件名的最后一個數(shù)字進行排序。


我建議在這里使用自定義鍵對列表進行不同的排序。假設(shè)文件名始終遵循相同的模式_DSC<number1>_<number2>.<ext>,您希望根據(jù) 對文件進行排序number2,您可以使用:


sortedlist = sorted(

        image_list,

        key=lambda filename: int(filename.split('_')[-1].split('.')[0])

    )

此處的 lambda 將針對它獲取的每個元素(在本例中為文件名)拆分_為最后一個元素,因此在本例中為最后一個數(shù)字,不帶擴展名(因此為.split('.')[0])并將其轉(zhuǎn)換為 int 以刪除過多的開頭的零能夠正確排序。


請注意,只有當所有文件名都遵循相同的模式時,這才有效,否則,您可能會遇到其他問題。


希望這可以幫助!


查看完整回答
反對 回復(fù) 2022-11-29
  • 1 回答
  • 0 關(guān)注
  • 103 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號