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]元素进行排序?
答案 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)]))