元组字典的排序字典解决方案适用于列表,不适用于元组

2024-09-26 22:10:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在Python中使用OrderedDict,在这里我使用lambda对字典数据进行排序。不知怎的,我写得不对。关于这篇文章

sorting a nested dictionary with lists in python

我试着用两把钥匙订字典 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的形式获取这些信息,并以特定的顺序对其进行迭代。你知道吗

有人能帮忙吗?你知道吗

谢谢各位的回复! 只是添加预期的输出。请参阅,首先按主键(Code、Info、Process)排序,然后按值元组中的第二个元素(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)},
    }

我希望这能解释我的问题。 再次感谢你这么快的回复。你知道吗


Tags: lambdainfo字典排序codeprocessordereddict元组

热门问题