簡體   English   中英

如何按升序對長列表進行排序

[英]how to sort a long list by ascending order

                print(addition)
                decimal = sum(addition) / len(addition)
                d = decimal * 100
                percentage = float("{0:.2f}".format(d))
                print(percentage)
                list_name_second.append({'Name': x, 'percentage': float(percentage)})
                list_name.append(x)
                addition.clear()

    i = i + 1
if i == num_lines:
    def sort_percentages(list_name_second):
        print(list_name_second.sort('percentage'))

    print(sort_percentages(list_name_second), end='\n\n')

上面的代碼在一個循環中(除了底部)它收集百分比然后存儲在一個看起來像這樣的列表中:

[{'Name': 'Malcolm', 'percentage': '50.0'}]

我希望能夠使用百分比對列表進行排序,但我不知道該怎么做,請幫忙

計算中的打印功能也用於故障排除,不要關注它們

您可以使用 python 的內置函數sort()sorted()其中sort()方法將對列表進行就地排序,而sorted()將返回一個新的排序列表,以防您不需要原始列表。 sort()sorted()都有一個key參數,該參數指定一個可調用對象,該可調用對象將在每個列表的元素上調用以進行比較。 有關更多詳細信息,請參閱文檔

例如,如果我們說您的列表如下所示:

>>> list_name_second = [
    {'Name': 'Malcolm', 'percentage': 50.0},
    {'Name': 'Sam', 'percentage': 30.0},
    {'Name': 'Ru', 'percentage': 100.0},
    {'Name': 'Kam', 'percentage': 10.0},
    {'Name': 'Joe', 'percentage': 20.0}
   ]

因此,您可以使用sort(key=callable)根據dict列表元素的percentage鍵對列表in-place排序,如下所示:

>>> list_name_second.sort(key=lambda d: d['percentage'])
>>> list_name_second
[{'Name': 'Kam', 'percentage': 10.0}, {'Name': 'Joe', 'percentage': 20.0}, {'Name': 'Sam', 'percentage': 30.0}, {'Name': 'Malcolm', 'percentage': 50.0}, {'Name': 'Ru', 'percentage': 100.0}]

或者,您可以使用sorted(key=callable)它將返回一個新的排序列表,如下所示:

>>> sorted(list_name_second, key=lambda d: d['percentage'])
[{'Name': 'Kam', 'percentage': 10.0}, {'Name': 'Joe', 'percentage': 20.0}, {'Name': 'Sam', 'percentage': 30.0}, {'Name': 'Malcolm', 'percentage': 50.0}, {'Name': 'Ru', 'percentage': 100.0}]

在這里,您傳遞了一個可調用的 lambda function 以應用於列表的每個元素,它從dict中提取'percentage'鍵的值並將其返回給sortsorted的內置函數,用作排序過程的參考.

Note:如果列表中的元素如下所示: [{'Name': 'Malcolm', 'percentage': '50.0'}] ,其中'percentage'的值是字符串,則必須將其值轉換為比較為浮點數,如下所示:

>>> list_name_second = [
    {'Name': 'Malcolm', 'percentage': '50.0'},
    {'Name': 'Sam', 'percentage': '30.0'},
    {'Name': 'Ru', 'percentage': '100.0'},
    {'Name': 'Kam', 'percentage': '10.0'},
    {'Name': 'Joe', 'percentage': '20.0'}
    ]
>>> sorted(list_name_second, key=lambda d: float(d['percentage']))
[{'Name': 'Kam', 'percentage': '10.0'}, {'Name': 'Joe', 'percentage': '20.0'}, {'Name': 'Sam', 'percentage': '30.0'}, {'Name': 'Malcolm', 'percentage': '50.0'}, {'Name': 'Ru', 'percentage': '100.0'}]

暫無
暫無

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

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