关于python:字典排序方法

Methods for sorting a dictionary

我指的是这个问题:https://stackoverflow.com/a/575889/292291

  • 如果我使用整数作为键,那么看起来我得到了排序顺序的保证?

    1
    2
    3
    >>> dict = { 2:"list 2", 0:"list 0", 1:"list 1" }
    >>> dict
    {0: 'list 0', 1: 'list 1', 2: 'list 2'}
  • sorted(mydict, key=lambda key: mydict[key])中,如何解释或读取lambda?我不明白这一点,因为我刚接触兰伯斯。key:mydict[key]指的是什么?

  • sorted(d, key=d.get)中,d.get指的是什么?如果我这样做:

    1
    2
    >>> dict.get
    <built-in method get of dict object at 0x1d27830>

  • 1-口述永远不能保证一个顺序,有时它甚至看起来像这样,但在那里得到足够的数字,你会发现他们没有(这是因为每一个键都有散列)

    2-这两个相同:

    1
    2
    3
    4
    lambda key: mydict[key]

    def temp_function(key):
        return mydict[key]

    基本上,您正在创建一个临时函数,它接收键作为参数,并返回mydict[键]

    3-sorted的第二个参数是传递当前dict键的将被调用的函数。此返回的值将用于确定已排序的dict的顺序。


  • 不可以。字典是按其键的哈希排序的,不能保证哈希算法在版本或实现之间不会发生更改。

  • lambda:之间的一切都是论据。:之后的所有内容都是返回的表达式。

  • 绑定到d的对象的get方法。在dict对象中,如果键存在,则返回值,否则返回传递的默认值或None


  • 首先,请避免调用一个变量dict,因为您可以这样隐藏内置的。

    1)我不相信。如果您需要排序的dict,只需使用来自collections模块的OrderedDict

    2)您应该将其作为一个匿名函数来读取,给定一个输入参数key将返回对象mydict[key]。相当于:

    1
    2
    3
    def foo(key):
      # assume mydict is in scope
      return mydict[key]

    3)假设您的变量d是dict,它将返回字典中按d中相应值排序的键列表。这意味着在迭代时,函数d.get()被调用为in d的任何内容,并且列表将按d.get的返回值而不是对象本身排序。