Python 如果我想按一个标准升序,按另一个标准降序,如何使用排序函数?
我试图用Python实现A*算法作为一个学习练习。我有一个名为Python 如果我想按一个标准升序,按另一个标准降序,如何使用排序函数?,python,sorting,lambda,key,Python,Sorting,Lambda,Key,我试图用Python实现A*算法作为一个学习练习。我有一个名为open的节点列表,其中包含表示图形节点名称的字符串。示例:打开[“节点a”、“节点b”、“节点c”]。我还有两个defaultdict字典,f_estim和g,它们包含{“节点名称”:表示与节点关联的某个成本的整数}。我需要按照f_estim中关联的值对open列表进行升序排序,如果两个节点的值相等,则根据g中的值进行降序。我是这样升序排序的:open.sort(key=lambda节点:f_estim[node])。当达到两个相等
open
的节点列表,其中包含表示图形节点名称的字符串。示例:打开[“节点a”、“节点b”、“节点c”]
。我还有两个defaultdict
字典,f_estim
和g
,它们包含{“节点名称”:表示与节点关联的某个成本的整数}
。我需要按照f_estim
中关联的值对open
列表进行升序排序,如果两个节点的值相等,则根据g
中的值进行降序。我是这样升序排序的:open.sort(key=lambda节点:f_estim[node])
。当达到两个相等的值时,如何进行降序排序?我在sort
函数的文档中找不到答案。谢谢大家! 您可以这样做:
open.sort(key=lambda node: (f_estim[node], -g[node]))
您是否尝试过排序函数请添加完整示例(输入和预期输出)您的lambda可以返回一个元组,第一个是主条件,第二个是负条件。您是否尝试过这样做?open.sort(key=lambda node:(f_estim[node],-g[node])示例:open[“a”,“b”,“c”,“d”]f_estim{“a”:5,“b”:5,“c”:4,“d”:4}g:{“a”:1,“b”:2,“c”:3,“d”:4}在open.sort(??),我想获得open[“d”,“c”,“b”,“a”]请注意,这仅适用于数字排序标准,而不适用于其他类型的可比标准(例如字符串)