python:排序有序字典

foo*_*ion 3 python sorting dictionary

我创建了一个字典:

d[1] = {'a':1, 'b':2}
d[2] = {'a':5, 'b':3}
d[3] = {'a':3, 'b':2}
Run Code Online (Sandbox Code Playgroud)

然后我尝试按字段排序:

d = collections.OrderedDict(sorted(d.items(), key=itemgetter(1)))
Run Code Online (Sandbox Code Playgroud)

这样我就可以输出:

for key in d:
    print key, d[key]
Run Code Online (Sandbox Code Playgroud)

这对'a'排序,但我无法弄清楚如何对'b'进行排序.我如何排序'b'?

编辑:我不确定这是不清楚的.我想排序,以便输出按字段'b'中的值排序.

Kev*_*vin 6

修改您的键功能,以便显式返回b值.

d = collections.OrderedDict(sorted(d.items(), key=lambda (key, value): value['b']))
Run Code Online (Sandbox Code Playgroud)

编辑:显然3.X不喜欢在lambdas中解组tuple,所以你可能不得不求助于更长的方式:

d = collections.OrderedDict(sorted(d.items(), key=lambda key_value_pair: key_value_pair[1]['b']))
Run Code Online (Sandbox Code Playgroud)

  • @foosion,不是我所知道的.问题是,你想要得到的价值是两个层次,但普通的项目只有一个深度. (3认同)