Python 根据列表列表中的十六进制地址对内部列表进行排序

Python 根据列表列表中的十六进制地址对内部列表进行排序,python,python-3.x,Python,Python 3.x,我有下面的列表,我试图根据十六进制地址对内部列表进行排序 a = [['abc', 10, [['3840', 'name'], ['3844', 'rank'], ['0000', 'dob']]], ['xyz', 20, [['2840', 'name'], ['2844', 'rank'], ['0000', 'dob']]]] 这就是我所尝试的: a.sort(key=lambda x: int(x[2][0][0], 16)) 输出:它根据十六进制地址对整个列表(不仅仅

我有下面的列表,我试图根据十六进制地址对内部列表进行排序

a = [['abc', 10, [['3840', 'name'], ['3844', 'rank'], ['0000', 'dob']]],
     ['xyz', 20, [['2840', 'name'], ['2844', 'rank'], ['0000', 'dob']]]]
这就是我所尝试的:

a.sort(key=lambda x: int(x[2][0][0], 16))
输出:它根据十六进制地址对整个列表(不仅仅是内部列表)进行排序

[['xyz', 20, [['2840', 'name'], ['2844', 'rank'], ['0000', 'dob']]],
 ['abc', 10, [['3840', 'name'], ['3844', 'rank'], ['0000', 'dob']]]]
预期输出:我只需要对内部列表进行排序,如下所示

[['abc', 10, [['0000', 'dob'], ['3840', 'name'], ['3844', 'rank']]],
 ['xyz', 20, [['0000', 'dob'], ['2840', 'name'], ['2844', 'rank']]]]

有人能帮我解决这个问题吗?

您可以执行以下操作,在一个简单的循环中对内部列表进行排序:

for *_, lst in a:
    lst.sort(key=lambda x: int(x[0], 16))

a
# [['abc', 10, [['0000', 'dob'], ['3840', 'name'], ['3844', 'rank']]], 
#  ['xyz', 20, [['0000', 'dob'], ['2840', 'name'], ['2844', 'rank']]]]
如果你是一行,你可以使用以下理解:

a[:] = [[*y, sorted(lst, key=lambda x: int(x[0], 16))] for *y, lst in a]