gpt4 book ai didi

python - 我可以在 Python 中按数值对文本进行排序吗?

转载 作者:太空狗 更新时间:2023-10-29 17:56:04 25 4
gpt4 key购买 nike

我在 Python 中使用以下形式的键进行字典:

mydict = {'0'     : 10,
'1' : 23,
'2.0' : 321,
'2.1' : 3231,
'3' : 3,
'4.0.0' : 1,
'4.0.1' : 10,
'5' : 11,
# ... etc
'10' : 32,
'11.0' : 3,
'11.1' : 243,
'12.0' : 3,
'12.1.0': 1,
'12.1.1': 2,
}

有些指数没有子值,有些有一级子值,有些有两级。如果我只有一个子关卡,我可以将它们全部视为数字并按数字排序。第二个子级别迫使我将它们全部作为字符串处理。但是,如果我像字符串一样对它们进行排序,我将在 1 之后有 10,在 2 之后有 20

如何正确排序索引?

注意:我真正想做的是打印出按索引排序的字典。如果有比以某种方式对其进行排序更好的方法,那对我来说很好。

最佳答案

您可以按照您想要的方式对键进行排序,方法是将它们拆分为“.”。然后将每个组件转换为整数,如下所示:

sorted(mydict.keys(), key=lambda a:map(int,a.split('.')))

返回这个:

['0',
'1',
'2.0',
'2.1',
'3',
'4.0.0',
'4.0.1',
'5',
'10',
'11.0',
'11.1',
'12.0',
'12.1.0',
'12.1.1']

您可以遍历该键列表,并根据需要从字典中提取值。

您也可以对 mydict.items() 的结果进行排序,非常相似:

sorted(mydict.items(), key=lambda a:map(int,a[0].split('.')))

这为您提供了(键,值)对的排序列表,如下所示:

[('0', 10),
('1', 23),
('2.0', 321),
('2.1', 3231),
('3', 3),
# ...
('12.1.1', 2)]

关于python - 我可以在 Python 中按数值对文本进行排序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1534542/

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