gpt4 book ai didi

带有 itemgetter 和比较器的 Python sorted()

转载 作者:太空宇宙 更新时间:2023-11-04 02:01:10 25 4
gpt4 key购买 nike

我有一个用 functools.cmp_to_key 包装的比较器函数,这样我就可以在调用 sorted() 时使用它。

问题是我已经在使用 itemgetter 作为 key 。 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] ) )

最佳答案

您需要编写 getter 和比较器。效果如下:

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)))

关于带有 itemgetter 和比较器的 Python sorted(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55696005/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com