我正在尝试OrderedDict
在 Python 中使用lambda
. 不知何故,我无法正确地写这个。参考这个帖子
我尝试使用两个键来订购我的字典 1. 第一组(信息、代码、流程等) 2. 作为内部字典的第二个元组值(7、2、45、18、19 等)。但是,没有得到我想要的。这是我的输入 -
a = {'Info': {3: ('info1', 7), 4: ('info4', 2)},
'Process': {1: ('info2', 45), 8: ('info8', 18), 10: ('info11', 19)},
'Code': {23: ('info3', 45), 27: ('info21', 34)}}
print sorted(a.items(), key=lambda x: (x[1].values()[0][1], x[0]))
最终,我想以OrderedDict
特定的顺序获取这些信息并对其进行迭代。
任何人都可以帮忙吗?
感谢各位回复!只需添加预期的输出。看,首先它按主键(代码、信息、进程)排序,然后内部字典按值元组中的第二个元素排序 (34, 45), (2,7), (18, 19, 45)
a = {'Code': {27: ('info21', 34), 23: ('info3', 45)},
'Info': {4: ('info4', 2), 3: ('info1', 7)},
'Process': {8: ('info8', 18), 10: ('info11', 19), 1: ('info2', 45)},
}
如果我们跳过第一个键排序,我没问题,即只有内部字典按值元组 (34, 45)、(2,7)、(18, 19, 45) 中的第二个元素排序。因此,在这种情况下,预期的答案是:
a = {'Info': {4: ('info4', 2), 3: ('info1', 7)},
'Process': {8: ('info8', 18), 10: ('info11', 19), 1: ('info2', 45)},
'Code': {27: ('info21', 34), 23: ('info3', 45)},
}
我希望这能解释我的问题。再次感谢您如此迅速地回复。