繁体   English   中英

如何将一个列表中的项目追加到另一个列表?

[英]How to append a item from a list to another list?

我需要将与最高价格(10.0)匹配的所有商品的名称打印为maximumPriceList。我的问题是,即使价格与最高价格匹配,它也不会追加。 清单是[itemName,price]

inventoryList = [['Steak', ' 10'], ['Milk', ' 2'], ['Fruits', ' 10'], ['Canned Corn', ' 0.50']]
highestPriceItem = 10.0
highestPriceList = []

for item in inventoryList:
    if item[1] == highestPriceItem:
        highestPriceList.append(item[0])
print ("Item with highest wholsesale price: ",highestPriceList)

有什么建议么?

您正在比较字符串,其中' 10'10.0是不同的东西。 请改用数字:

inventoryList = [['Steak', 10], ['Milk', 2], ['Fruits', 10], ['Canned Corn', 0.50]]
highestPriceItem = 10.0
highestPriceList = []

for item in inventoryList:
    if item[1] == highestPriceItem:
        highestPriceList.append(item[0])
print ("Item with highest wholsesale price: ",highestPriceList)

或者,如果由于问题中未显示的原因,您需要保留字符串,然后至少将其作为数字进行比较:

inventoryList = [['Steak', ' 10'], ['Milk', ' 2'], ['Fruits', ' 10'], ['Canned Corn', ' 0.50']]
highestPriceItem = 10.0
highestPriceList = []

for item in inventoryList:
    if float(item[1]) == highestPriceItem:
        highestPriceList.append(item[0])
print ("Item with highest wholsesale price: ",highestPriceList)
In [66]: inventoryList = [['Steak', ' 10'], ['Milk', ' 2'], ['Fruits', ' 10'], ['Canned Corn', ' 0.50']]

In [67]: maxPrice = max(float(L[1]) for L in inventoryList)

In [68]: highestPriceList = [L for L in inventoryList if float(L[1]) == maxPrice]

In [69]: highestPriceList
Out[69]: [['Steak', ' 10'], ['Fruits', ' 10']]

价格清单是一个字符串,第一个字符为空格。 比较的结果是浮点数10.0。因此,循环中的if均为false。 它应该是

inventoryList = [['Steak', '10.0'], ['Milk', '2.0'], ['Fruits', '10.0'], ['Canned Corn', '0.50']]
highestPriceItem = 10.0
highestPriceList = []

for item in inventoryList:
  if float(item[1]) == highestPriceItem:
    highestPriceList.append(item[0]) # Only the item is appended and not the price
print ("Item with highest wholsesale price: ",highestPriceList)

或者,将价格更改为浮动在列表中。 如果您需要做进一步的操作,那么以后可以节省时间。

以下将是这样做的一种体面(鉴于您的限制)方法。 您的结构inventoryList保持相同, highestPriceItem可以保持其目前的形式为好。 我使用列表推导而不是for语句来使其更有效,更重要的是更具可读性。

inventoryList = [['Steak', ' 10'], ['Milk', ' 2'], ['Fruits', ' 10'], ['Canned Corn', ' 0.50']]
highestPriceItem = 10.0
highestPriceList = [item[0] for item in inventoryList if float(item[1]) == highestPriceItem]

print ("Item with highest wholsesale price: ", highestPriceList)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM