我正在尝试做一种类似商店的程序,有 5 种商品,它会询问您产品的名称和价格,我想按价格降序组织它。
#initialise variables
product1 = []
product2 = []
product3 = []
product4 = []
product5 = []
products = []
totalCost = 0.0
#input products and prices funtions
def getInput1():
product1.append(input("What is the product?"))
product1.append(input("What is the price?"))
def getInput2():
product2.append(input("What is the product?"))
product2.append(input("What is the price?"))
def getInput3():
product3.append(input("What is the product?"))
product3.append(input("What is the price?"))
def getInput4():
product4.append(input("What is the product?"))
product4.append(input("What is the price?"))
def getInput5():
product5.append(input("What is the product?"))
product5.append(input("What is the price?"))
#ask user products and prices
getInput1()
getInput2()
getInput3()
getInput4()
getInput5()
products.append([product1, product2, product3, product4, product5])
products.sort(key=lambda tup: tup[1], reverse = True)
print("List is in format Product Name | Price")
print(products)
它只是正常显示价格并且不排序 (p.s)我知道它可以更整洁,但我不知道如何做到
最佳答案
问题是 products
是一个列表,您在其中插入了另一个列表[product1、product2、product3、product4、product5]
。然后,您对该外部列表(一个元素 - 内部列表)进行排序,这当然保持不变。
您可以用products = [product1,product2,product3,product4,product5]
代替products.append(...)
,一切都应该正常如你所愿。
对于清理,为什么要有这些单独的功能?只需编写一个 get_product
函数即可。
def get_product():
productname = input("What is the product? ")
productprice = input("What is the price? ")
return (productname, productprice)
然后收集其中 5 个:
products = []
for _ in range(5): # this is an idiomatic way to run the code in the for loop 5 times
product = get_product()
products.append(product)
并排序
products.sort(key=lambda t: t[1], reverse=True)
关于python - 排序时遇到问题(元组列表),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54683843/