Python按值按键排序字典项

Dej*_*ell 1 python python-3.3

我有以下字典:

{1: (8, 3), 0: (8, 0), 2: (2, 3), 3: (2, 0)}
Run Code Online (Sandbox Code Playgroud)

我想通过元组键然后通过字典的键对它进行排序,以便上面将:

 [{1: (2, 3), 3: (2, 0),0: (8, 3), 1: (8, 0)}]
Run Code Online (Sandbox Code Playgroud)

我写了以下内容:

result_list = sorted(codebook.items(), key= lambda item: item[1][0])
Run Code Online (Sandbox Code Playgroud)

这通过元组键排序,但之后不是字典键.

我该怎么做?

Jor*_*ley 5

sorted(codebook.items(), key= lambda item: (item[1][0],item[0]))
Run Code Online (Sandbox Code Playgroud)

这将首先按元组中的第一项排序,然后按字典键排序

只是为OP澄清一些事情

  • 字典不可排序,因此您不能拥有"排序"字典

    • (有一个OrderedDictionary,但它与NamedTuple基本相同,这两个容器都有订单)
  • 这将返回元组列表而不是字典.回报看起来像

    [(dictionary_key,(tuple,values)),(dictionary_key,(tuple,values),...]