我有一个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中的新手。我为此编写了一个丑陋的代码。有没有很好的方法来实现它?
谢谢,
答案 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
。