如何在一行中按dict [key] [key]对dict列表进行排序(Python3)

时间:2018-04-27 14:59:22

标签: python sorting

我想按照uid排序

rsp=[
       {'user': {'uid': 1, 'name': 'Bob'}},
       {'user': {'uid': 5, 'name': 'Sid'}},
       {'user': {'uid': 2, 'name': 'Cas'}},
    ]

rsp=[
       {'user': {'uid': 1, 'name': 'Bob'}},
       {'user': {'uid': 2, 'name': 'Cas'}},
       {'user': {'uid': 5, 'name': 'Sid'}},
    ]

我试过这种方式.....但它不起作用

result = sorted(rsp, key=itemgetter('user').itemgetter('uid'))

2 个答案:

答案 0 :(得分:6)

您可以将lambda函数传递给key参数:

result = sorted(rsp, key=lambda x: x.get('user', {}).get('uid', -1) )

在这种情况下,我使用get来确保排序不会失败,如果其中一个元素没有user键,并且任何子词典没有{{1}键将首先放置。

答案 1 :(得分:4)

您可以尝试将此作为排序词典列表的键:

rsp.sort(key = lambda x: x['user']['uid'])

>>> rsp
[{'user': {'uid': 1, 'name': 'Bob'}}, {'user': {'uid': 2, 'name': 'Cas'}}, {'user': {'uid': 5, 'name': 'Sid'}}]