[英]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.