簡體   English   中英

如何在python中按降序對數字進行排序?

[英]how to sort numbers in a descending order in python?

我有以下代碼,我想按降序對 metal 的值進行排序,我可以使用 metalal 的名稱來調用它們中的每個數字。 我給它起的名字。 例如,如果我想調用 Platinum 的值,我可以使用“platinum.valuePerBar”,請注意我有自己的對象,它稱為 RIT_object,我可以將每個參數的類型放入類中,如您在代碼中所見

from rit_object import *            # rit_object class

class Metal(rit_object):
    """
    Represents a single metal type, composed of:
    :slot name (str): The name of the metal
    :slot totalBars (int): The total number of bars
    :slot weightPerBar (int): The weight of a single bar
    :slot valuePerBar (int): The value of a single bar
    :slot valuePerWeight (float): The value per weight of the metal
    :slot barsTaken (int): The number of bars added to the satchel
    """

    __slots__ = ( 'name' ,  'totalBars' , 'valuePerBar' , 'weightPerBar' , 'barsTaken' )
    _types = ( str , int , int, int, float, int )




def createMetal(name, totalBars, weightPerBar, valuePerBar):
    """
    Create and return a new Metal object.
    :param name (str): The name of the metal
    :param totalBars (int): The total number of bars
    :param weightPerBar (int): The weight of a single bar
    :param valuePerBar (int): The value of a single bar
    :return: A newly initialized Metal object
    :rtype: Metal
    """
    platinum = Metal("platinum", 1, 1000, 6, 0)
    gold = Metal("gold", 1, 750, 5, 0)
    rhodium = Metal("rhodium", 1, 500, 5, 0)
    silver = Metal("silver", 1, 400, 4, 0)

def sortMetalsByValuePerBar(metals):
    """
    Sort the metals by value per bar using insertion sort.  The list of
    metals is modified in place to be ordered by value per bar.
    :param metals (list of Metal): The list of metals
    :return: None
    :rtype: NoneType
    """

如何按降序對值進行排序?

嘗試使用reverse參數sorted

sorted([1,2,3,4], reverse=True)

與您的代碼相關:

從集合導入namedtuple

Metal = namedtuple('Metal', 'name, totalBars, weightPerBar, valuePerBar')

platinum = Metal("platinum", 1, 1000, 100.23) 
gold = Metal("gold", 1, 750, 20.043) 
rhodium = Metal("rhodium", 1, 500, 10.93) 
silver = Metal("silver", 1, 400, 15.73)

metals = [platinum, silver, gold, rhodium]

# Sort by value in descending order
metals = sorted(metals, key=lambda x:x.valuePerBar, reverse=True)

for i in metals:
    print i.name, i.valuePerBar

[出去]:

platinum 100.23
gold 20.043
silver 15.73
rhodium 10.93

暫無
暫無

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

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