簡體   English   中英

如何在列表后按數字降序對列表進行排序:

[英]How to sort a list to be in descending order by numbers after :

我需要能夠以降序排列值。 這是我的輸出,它是列表形式,

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函數,但我無法使其正常工作,並且試過使用元組? 我是一個完整的初學者

我想要達到的結果是,將最壞的報告最多,然后制作一個餅圖顯示

您可以在排序功能中使用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']

如果您有1個大字符串,則希望拆分成幾行,然后將每行拆分成一個元組,例如("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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM