【发布时间】:2018-12-27 10:34:48
【问题描述】:
我有这样的字典:
input = {9: { 3: 0.0003 , 2: 0.0002}, 8: {1: 100.0, 2: 50.0, 3: 300.0}}
输出必须是这样的:
output = {8: {2: 50.0, 1: 100.0, 3: 300.0}, 9: {2: 0.0002, 3: 0.0003}}
尝试了OrderedDict、sorted 等,但仍然没有得到我想要的输出。
【问题讨论】:
-
1.你只想排序然后外层? 2.你知道CPython3.6之前的字典有任意顺序吗? 3. 为什么要对字典进行排序? 4. 请通过
OrderedDict展示您的尝试。 -
@timgeb 是的,我也准备好告诉他了 :-)
-
@timgeb 我试过这个 1. OrderedDict(sorted(input.items())) 2. {k: (dict(v.items(), key=operator.itemgetter(1)) ) for k,v in input.items()} 3. dict(sorted(input.items(), key=lambda (x,y): (x,sorted(y.items(), key=lambda (a, b): b))))
标签: python sorting dictionary