gpt4 book ai didi

python - 将自定义比较与 python 3 中的键选择相结合

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

我正在将一堆 python 2.7 代码迁移到 python 3,它在 python 2.7 中具有这样的模式:

sorted(some_list, cmp=custom_compare, key=custom_key_getter)

我想出的最好的迁移方法如下:

sorted(some_list, 
key=functools.cmp_to_key(
lambda x,y: custom_compare(custom_key_getter(x),
custom_key_getter(y)))

有没有更好的方法?或者更符合 python 3 的惯用方式?

最佳答案

作为权宜之计,我觉得还可以。

如果您有多个 custom_comparecustom_key_getter 的组合,我会将 lambda 分解为

def compare_using(custom_compare, custom_key_getter):
def comparator(x, y):
return custom_compare(custom_key_getter(x), custom_key_getter(y))
return comparator

如果你只有几个组合,我可以想象让它们预先计算,例如

compare_names_special = compare_using(compare_special, itemgetter('name'))
...
customers_by_name = sorted(customers, compare_names_special)

性能应该不会受到影响,因为这段代码只是展示了 Python 2 的排序功能。

从长远来看,我会考虑重写自定义比较函数,这样它们就不需要cmp_to_key 处理;在大多数情况下,它应该是微不足道的。

关于python - 将自定义比较与 python 3 中的键选择相结合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50104225/

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