在 Python 3 中使用 lambda 排序 [重复]

Posted

技术标签:

【中文标题】在 Python 3 中使用 lambda 排序 [重复]【英文标题】:Sort with lambda in Python 3 [duplicate] 【发布时间】:2015-12-06 20:32:26 【问题描述】:

此代码在 Python 2.7 中有效,我如何在 Python 3 中完成该工作?

arestas = dict()
edges = arestas.items()
edges.sort(key=lambda x: x[1])

返回的错误是:

AttributeError: 'dict_items' 对象没有属性 'sort'

谢谢!

【问题讨论】:

【参考方案1】:

这里的问题是dict.items() 在 Python 3 中返回一个 dictionary view。就好像你在 Python 2 中调用了 dict.viewitems()

要么先将字典视图转换为列表,要么使用sorted() function:

edges = list(arestas.items())
edges.sort(key=lambda x: x[1])

edges = arestas.items()
edges = sorted(edges, key=lambda x: x[1])

由于后者无论如何都包含到list 的隐式转换,因此它是更好的选择,除非您还需要访问未排序的列表。

【讨论】:

"除非您还需要访问未排序的列表。"介意解释一下吗?在您的任何一个示例中,您如何仍能访问未排序的列表? @MarkusMeskanen:edges = list(arestas.items()) 为您提供该列表;您可以在使用edges.sort()sorted(edges) 进行排序之前对其进行处理。 哦,对不起,我只是误解了这句话。好吧,很酷:)

以上是关于在 Python 3 中使用 lambda 排序 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

python sorted 和 lambda结合排序 例子

python字典怎么排序

请教如何使用lambda分组后排序

sorted() 和 lambda --> 应用:字典排序

python对二维列表进行排序而不使用lambda

python3排序 sorted(key=lambda)