按嵌套列表的值对列表进行排序

时间:2017-11-26 10:03:12

标签: python list sorting

from colorthief import ColorThief
from operator import itemgetter
import itertools
import sys
import os
import glob
import math
import hilbert    
folder = sys.argv[1]

imgfiles = glob.glob(os.path.join(folder, "*.jpg"))
dominant_rgb_color = []
files_domColor = []


for imgfile in imgfiles:
    color_thief = ColorThief(imgfile)
    dominant_rgb_color.append(list(color_thief.get_color(quality=1)))

for a, b in itertools.izip(imgfiles, dominant_rgb_color):
    files_domColor.append([a,b])

files_domColor.sort(key=lambda(r,g,b):hilbert.Hilbert_to_int([int(r*255),int(g*255),int(b*255)]))

for f in files_domColor:
    print f

我知道如果我有3位数的嵌套列表,如何对列表进行排序。方式就在这里

sort(key=lambda(r,g,b):hilbert.Hilbert_to_int([int(r*255),int(g*255),int(b*255)]))

但是使用这3个数字连接的文件很有用,所以我把它们放在带有izip功能的列表中。但现在是否可以再次列出列表以及我添加的第一个元素? files_domColor列表的输出是

[['temp2\\11.jpg', [16, 17, 14]], ['temp2\\7.jpg', [40, 33, 27]], ['temp2\\8.jpg', [31, 26, 22]], ['temp2\\9.jpg', [39, 32, 25]]]

所以,我想对所有列表进行排序。所以问题是如何对每个列表的[0]元素进行排序,因为我只知道如何对[1]元素进行排序?

1 个答案:

答案 0 :(得分:1)

你的意思是,像这样?

sort(key=lambda(x):hilbert.Hilbert_to_int([int(x[1][0]*255),int(x[1][1]*255),int(x[1][2]*255)]))