python - 排序时遇到问题(元组列表)

标签 python python-3.x sorting

我正在尝试做一种类似商店的程序,有 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/

相关文章:

c++ - Quicksort 出现段错误

java - ArrayList<BigInteger> 排序算法 Java

python - 没有名为 Flask (GAE) 的模块

python - 通过python授予USB权限

用于(简单)无向图的 Python 库/模块

python - 在 Pandas 中使用 Groupby 对象并重新采样

python - 日期时间表示存在 SQLAlchemy + SQLite "create_function"问题

python - 为什么 "None"与 "np.newaxis"具有相同的效果?

python - 访问列表/从列表传递到类的数据

javascript - 按 3 的 block 对数组进行排序