字典内字典排序

dictionary inside dictionary sorting

这是我需要按“错误”值排序的字典

{'mdouglas': {'INFO': 2, 'ERROR': 3}, 'noel': {'INFO': 6, 'ERROR': 3}, 'breee': {'INFO': 1, 'ERROR': 5}, 'ac': {'INFO': 2, 'ERROR': 2}, 'blossom': {'INFO': 2, 'ERROR': 6}, 'rr.robinson': {'INFO': 2, 'ERROR': 1}, 'mcintosh': {'INFO': 4, 'ERROR': 3}, 'jackowens': {'INFO': 2, 'ERROR': 4}, 'oren': {'INFO': 2, 'ERROR': 7}, 'xlg': {'INFO': 0, 'ERROR': 4}, 'ahmed.miller': {'INFO': 2, 'ERROR': 4}, 'bpacheco': {'INFO': 0, 'ERROR': 2}, 'enim.non': {'INFO': 2, 'ERROR': 3}, 'flavia': {'INFO': 0, 'ERROR': 5}, 'sri': {'INFO': 2, 'ERROR': 2}, 'nonummy': {'INFO': 2, 'ERROR': 3}, 'britanni': {'INFO': 1, 'ERROR': 1}, 'montanap': {'INFO': 0, 'ERROR': 4}, 'mai.hendrix': {'INFO': 0, 'ERROR': 3}, 'kirknixon': {'INFO': 2, 'ERROR': 1}}

这样就可以了,

errors = [(key, data[key]["ERROR"]) for key in data.keys()] #data here is the dictionary
snorted_keys = sorted(errors, key = lambda item:item[-1])
snorted_dict = list(map(lambda item:(item[0], data[item[0]]), snorted_keys))

输出-

[('rr.robinson', {'ERROR': 1, 'INFO': 2}),
 ('britanni', {'ERROR': 1, 'INFO': 1}),
 ('kirknixon', {'ERROR': 1, 'INFO': 2}),
 ('ac', {'ERROR': 2, 'INFO': 2}),
 ('bpacheco', {'ERROR': 2, 'INFO': 0}),
 ('sri', {'ERROR': 2, 'INFO': 2}),
 ('mdouglas', {'ERROR': 3, 'INFO': 2}),
 ('noel', {'ERROR': 3, 'INFO': 6}),
 ('mcintosh', {'ERROR': 3, 'INFO': 4}),
 ('enim.non', {'ERROR': 3, 'INFO': 2}),
 ('nonummy', {'ERROR': 3, 'INFO': 2}),
 ('mai.hendrix', {'ERROR': 3, 'INFO': 0}),
 ('jackowens', {'ERROR': 4, 'INFO': 2}),
 ('xlg', {'ERROR': 4, 'INFO': 0}),
 ('ahmed.miller', {'ERROR': 4, 'INFO': 2}),
 ('montanap', {'ERROR': 4, 'INFO': 0}),
 ('breee', {'ERROR': 5, 'INFO': 1}),
 ('flavia', {'ERROR': 5, 'INFO': 0}),
 ('blossom', {'ERROR': 6, 'INFO': 2}),
 ('oren', {'ERROR': 7, 'INFO': 2})]