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



我想按uid

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

to

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

ive尝试了这种方式.....但是它不起作用

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

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

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

在这种情况下,我正在使用get来确保如果其中一个元素没有user密钥,则排序不会失败,并且任何没有uid密钥的次数都将首先放置。

您可以尝试以键入字典列表:

rsp.sort(key = lambda x: x['user']['uid'])
>>> rsp
[{'user': {'uid': 1, 'name': 'Bob'}}, {'user': {'uid': 2, 'name': 'Cas'}}, {'user': {'uid': 5, 'name': 'Sid'}}]

最新更新