我有一个比较器函数,该函数用functools.cmp_to_key
包装,以便在调用sorted()
时可以使用它。
问题是我已经在使用itemgetter
作为密钥了。 itemgetter用于从字典中检索值,而该值就是用来对集合进行排序的。
因此,从本质上讲,我需要使用itemgetter来检索值,然后需要使用比较器函数对它们进行正确排序。
我尝试了以下组合,但似乎都不起作用:
for x in range( 0, len(sort_columns) ):
comparer = cmp_to_key(sort_columns[x].sort_func)
results = sorted( data, key=comparer )
results = sorted( data, key=comparer(itemgetter( sort_columns[x] ) ) )
results = sorted( data, key=itemgetter( comparer( sort_columns[x] ) ) )
如果不需要特定的比较器,则将其称为:
results = sorted( data, key=itemgetter( sort_columns[x] ) )
答案 0 :(得分:2)
您需要组成获取器和比较器。可以起到以下作用的
for columns in sort_columns: # don't use a range loop unless you need to
comparer = cmp_to_key(columns.sort_func)
getter = itemgetter(columns)
data = sorted(data, key=lambda x: comparer(getter(x)))