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]