python按索引排序2D字典

时间:2012-03-19 23:47:36

标签: python sorting

我有一个2D字典如下

    dict =  {'182.12.17.50': {'185.23.15.69': 30, '175.12.13.14': 14}, '182.15.12.30': {'175.12.13.15': 10, '145.33.34.56': 230}}

我希望根据值进行排序,使得输出看起来像

  [{IP1: '182.15.12.30', IP2: '175.12.13.15', val:10}, {IP1: '182.12.17.50', IP2: '175.12.13.14', val:14}, ...]

我是python中的新手。我为此编写了一个丑陋的代码。有没有很好的方法来实现它?

谢谢,

1 个答案:

答案 0 :(得分:4)

您可以使用generator expression和内置sorted

sorted(({'IP1': ip1, 'IP2': k, 'val':v}
           for ip1,subdct in dct.items()
           for k,v in subdct.items()),
       key=lambda newd: newd['val'])

顺便说一句,使用dict作为变量的名称是个坏主意,因为这样做会掩盖内置的dict。因此,我将变量重命名为dct