在 Python 3 中使用 lambda 进行排序

Mic*_*err 4 sorting lambda dictionary python-2.7 python-3.x

这段代码适用于 Python 2.7,我如何在 Python 3 中完成这项工作?

arestas = dict()
edges = arestas.items()
edges.sort(key=lambda x: x[1])
Run Code Online (Sandbox Code Playgroud)

返回的错误是:

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

谢谢!

Mar*_*ers 6

这里的问题是在 Python 3中dict.items()返回一个字典视图。就像你dict.viewitems()在 Python 2 中调用一样。

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

edges = list(arestas.items())
edges.sort(key=lambda x: x[1])
Run Code Online (Sandbox Code Playgroud)

或者

edges = arestas.items()
edges = sorted(edges, key=lambda x: x[1])
Run Code Online (Sandbox Code Playgroud)

由于后者包含了一个隐式转换list,它是更好的选择,除非您仍然需要访问未排序的列表。