代码之家  ›  专栏  ›  技术社区  ›  nicolas

为什么(dictionary.keys()).sort()不能在python中工作?

  •  3
  • nicolas  · 技术社区  · 14 年前

    我对python还不太熟悉,不明白为什么这样的事情行不通。 我也找不到其他地方提出的问题。

    toto = {'a':1, 'c':2 , 'b':3}
    toto.keys().sort()           #does not work (yields none)
    (toto.keys()).sort()         #does not work (yields none)
    eval('toto.keys()').sort()   #does not work (yields none)
    

    但是,如果检查类型,我会发现我在列表中调用了sort(),那么问题是什么。

    toto.keys().__class__     # yields <type 'list'>
    

    唯一的方法是添加一些临时变量,这很难看

    temp = toto.keys()
    temp.sort()
    

    我错过了什么,一定有更好的方法。

    3 回复  |  直到 13 年前
        1
  •  7
  •   Robert Munteanu    14 年前

    sort() 排序列表 就位 . 它返回 None 以防止您认为它会将原始列表单独保存并返回排序后的列表副本。

        2
  •  7
  •   CTT    14 年前
    sorted(toto.keys())
    

    应该做你想做的。您正在使用的排序方法已就位,但未返回任何排序。

        3
  •  1
  •   Stefano Borini    14 年前

    sort() 方法就地排序,返回 none . 你必须使用 sorted(toto.keys()) 它返回一个新的iterable,排序。