gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 23:47:47 24 4
gpt4 key购买 nike

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

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]

关于python - 根据列表列表中的十六进制地址对内部列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61473365/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com