【发布时间】:2020-01-31 22:44:59
【问题描述】:
给定两个列表avail 和prod,其中avail 是一个包含电话号码、项目代码和价格的列表,prod 是一个包含项目代码和名称的列表,我想试试如果avail 中的项目代码也在prod(产品列表)中,则查找给定项目代码的最低价格,返回一个列表列表,其中提供每个项目的电话号码、价格和项目代码。
我已经尝试了下面的代码,但它只是附加了每个 j[2],这是可以理解的(它附加了所有价格并只打印了最小值)。我不知道如何实现。
def best_prices(avail,prod):
lowest_prices=[]
price_list=[]
for i in prod:
for j in avail:
if i[0]==j[1]:
price_list.append(j[2])
store_min=min(price_list)
print(store_min)
print(price_list)
lowest_prices.append(j)
return lowest_prices
列表格式如下:
avail = [
['phone number', 'item code', 'price'],
...
]
prod = [
['item code', 'name of product'],
...
]
以下是一些输入样本:
prod = [
['123456789', '2L 2% Vitali Milk'],
['123456798', '1L 2% Vitali Milk'],
['456392452', '70% Cocoa Zimbra Chocolate'],
['456123490', 'Zimbra Milk Chocolate'],
['634590221', 'Onion flavour chips'],
['634599011', 'Vinegar flavour chips'],
['780123678', 'Sliced white bread'],
['780432109', 'Sliced whole wheat bread'],
['809001234', '2L Orange Juice'],
['808765432', '2L Apple Juice']
]
avail = [
['123456789', '7807890123', '2.58'],
['123456789', '7804922860', '2.99'],
['456392452', '7807890123', '2.11'],
['456123490', '7804922860', '3.10'],
['808765432', '7809876543', '4.10']
]
我希望我的程序对每个匹配的商品代码,通过avail 查找最低价格,然后返回包含最低价格最低价格和商品代码的电话号码的列表。
所以,对于:
prod = [
['123456789', '2L 2% Vitali Milk']
]
和
avail = [
['123456789', '7807890123', '2.58'],
['123456789', '7804922860', '2.99'],
['456392452', '7807890123', '2.11']
]
我要返回:
new_list = [
['2.58', '123456789', '7807890123']
]
【问题讨论】:
-
请提供示例输入和输出,以帮助您的问题更清晰
-
第一步是将您的两个列表合并为一个。那么确实
min应该立即返回正确的值。 -
@G.Anderson Done 添加了示例案例
-
@usr2564301 那会怎样呢?我想返回一个列表列表,其中包含列表列表中每个列表的价格、项目代码、电话号码。所以每个项目一个