【问题标题】:Sort with lambda in Python 3 [duplicate]在 Python 3 中使用 lambda 排序 [重复]
【发布时间】: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'

谢谢!

【问题讨论】:

    标签: python-2.7 sorting python-3.x dictionary lambda


    【解决方案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) 进行排序之前对其进行处理。
    • 哦,对不起,我只是误解了这句话。好吧,很酷:)
    猜你喜欢
    • 2021-01-25
    • 2011-01-24
    • 2013-11-08
    • 1970-01-01
    • 1970-01-01
    • 2011-04-15
    相关资源
    最近更新 更多