如何对列表进行排序,使其在以下时间之后按数字降序排列:

2024-06-17 10:31:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要能够按降序排列值。这是我的输出,是列表形式的

Eutherian - Bat - Microbat : 28
Avian - Other : 203
Marsupial - Macropod : 14
Eutherian - Bat - Flying Fox : 25
Reptile - Lizard : 28
Avian - Waterbird : 19
Marsupial - Koala : 13
Marsupial - Possum/Glider : 50
Reptile - Snake - Terrestrial : 18
Amphibian - Native Frog : 2
Reptile - Turtle - Freshwater : 3
Marsupial - Dasyurid : 4
Marsupial - Bandicoot : 4
Avian - Seabird/Pelican : 5
Avian - Raptor : 3
Reptile - Snake - Marine : 1
Reptile - Turtle - Marine : 2

我试过使用split函数,但我不能让它工作,我试过使用元组?我完全是个初学者

我试图达到的结果是,将最多的报告放到最坏的报告中,然后制作一个饼图来显示这一点


Tags: 列表报告形式otherturtlesnakebatmarine
2条回答

您可以在sort函数中使用key选项

一个小的lambda可以帮助您从字符串中分离数字

例如

x = ['A: 10', 'B: 2', 'C: 12']
x.sort(key=lambda y:int(y.split(":")[-1]), reverse=True)
print(x)

结果是:

['C: 12', 'A: 10', 'B: 2']

如果有一个大字符串要拆分为一系列行,则将每行拆分为一个元组,如("Eutherian - Bat - Microbat", 28),第二项为整数,然后按整数值降序排序:

lines = """
Eutherian - Bat - Microbat : 28
Avian - Other : 203
Marsupial - Macropod : 14
""".strip().split('\n')

tuples = []
for l in lines:
    k, v = l.split(' : ')
    tuples.append((k, int(v)))

sorted_tuples = sorted(tuples, key=lambda item: item[1], reverse=True)

for k, v in sorted_tuples:
    print(k, ":", v)

输出:

Avian - Other : 203
Eutherian - Bat - Microbat : 28
Marsupial - Macropod : 14

相关问题 更多 >