我有一个包裹在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] ) )
最佳答案
您需要组成获取器和比较器。效果:
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)))
关于python - python sorted()与itemgetter和比较器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55696005/