1

私はPythonの初心者で、リストからタプルから要素を取得するのに苦労しています. 私がやろうとしているのは、果物の価値を取得し、必要な量を掛けることです。以下の例は、私が何を意味するかを示しています。タプルの 2 番目の要素を取得する方法がわかりません。

##Cost of [('apples', 2.0), ('pears', 3.0), ('limes', 4.0)] is 12.25


fruitPrices = {'apples':2.00, 'oranges': 1.50, 'pears': 1.75,'limes':0.75,   
               'strawberries':1.00}

def buyLotsOfFruit(orderList):
##    orderList: List of (fruit, numPounds) tuples        
## Returns cost of order

totalCost = 0.0 
for fruit,price in fruitPrices.items():
  if fruit not in fruitPrices:
    print 'not here!'
  else:
    totalCost = totalCost +fruitPrices[fruitPrices.index(fruit)].key() * price            
return totalCost

私がそれを機能させることができないのは、主に私のelseステートメントにあります。すべてのヘルプは大歓迎です!

4

4 に答える 4

2

なぜ辞書をループしているのですか?代わりにリストをループし、それに応じて追加してくださいtotalCost

for fruit, n in orderList:
    if fruit in fruitPrices:
        totalCost += fruitPrices[fruit] * n
    else:
        print fruit, 'not here!'

これらすべてを単純化して、次のようなことができます

sum(fruitPrices.get(fruit, 0) * n for fruit, n in orderList)

が入っている場合は返され、そうでない場合はfruitPrices.get(fruit, 0)返されることに注意してください。fruitPrices[fruit]fruitfruitPrices0

于 2013-01-10T03:41:58.170 に答える
0

これを1行にまとめることができますが、それが役立つとは思いません。価格辞書をループしていますが、orderList をループしてから、辞書で果物を検索する必要があります。

def buyLotsOfFruit(orderList):
    totalCost = 0.0 
    for fruit, quantity in orderList:
       if fruit not in fruitPrices:
           print 'not here!'
       else:
           totalCost = totalCost +fruitPrices[fruit]* quantiy            
    return totalCost
于 2013-01-10T03:40:23.200 に答える
0
fruitPrices = {'apples':2.00, 'oranges': 1.50, 'pears': 1.75,'limes':0.75,   
               'strawberries':1.00}

def buyLotsOfFruit(orderList):
    ##    orderList: List of (fruit, numPounds) tuples        
    ## Returns cost of order

    totalCost = 0.0 
    for fruit,price in fruitPrices.items():
        if fruit not in fruitPrices:
            print 'not here!'
        else:
            #totalCost = totalCost +fruitPrices[fruitPrices.index(fruit)].key() * price            
            totalCost = totalCost +fruitPrices[fruit] * price

    return totalCost
于 2013-01-10T03:41:06.960 に答える
0

:

この関数全体を次のようにワンライナーに入れることができます。

buyLotsOfFruit = lambda ol: sum(fruitPrices[f] * p for f, p in ol if f in fruitPrices)

または、この他の方法:

def buyLotsOfFruit(orderList):
    ##    orderList: List of (fruit, numPounds) tuples        
    ## Returns cost of order

    totalCost = 0.0 
    for fruit, pounds in orderList:
        if fruit not in fruitPrices:
            print 'not here!'
        else:
            totalCost += fruitPrices[fruit] * pounds
    return totalCost

ディクショナリからキーを取得するために必要なのはこれだけです:dictionary[key] そしてそれは値を返します

于 2013-01-10T03:43:11.583 に答える