Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 排序困难(元组列表)_Python_Python 3.x_Sorting - Fatal编程技术网

Python 排序困难(元组列表)

Python 排序困难(元组列表),python,python-3.x,sorting,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("Wh

我正在尝试做一个类似商店的程序,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)我知道它可能会更整洁,但我一直在思考如何问题是
产品
是一个列表,您在其中插入了另一个列表
[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)

这确实有助于澄清一些问题,但我必须按成本从高到低对它们进行排序,我不太确定如何将它们联系起来并进行排序properly@KieranLaing你做的部分是正确的,你只是没有把你认为你是什么分类。您没有对产品列表进行排序,而是对包含一个元素的列表进行排序--产品列表。对外部列表进行排序总是会得到相同的结果(排序不是递归的或类似的):您需要对内部列表进行排序,并完全丢弃外部列表。