在 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 排序 [重复]的主要内容,如果未能解决你的问题,请参考以下文章