2016-09-29 14 views
1
Fruits = ['apple', 'orange', 'banana', 'kiwi'] 

A = [4, 3, 10, 8] 

B = {'apple': {'Bill': 4, 'Jan': 3, 'Frank': 5}, 
    'orange': {'Bill': 0, 'Jan': 1, 'Frank': 5}, 
    'banana': {'Bill': 8, 'Jan': 6, 'Frank': 2}, 
    'kiwi': {'Bill': 4, 'Jan': 2, 'Frank': 7}} 

私はAのすべての成果を合計し、Bでそれを掛けようとしています。これは問題を抱えています。Aはちょうど数字の配列で、Bは辞書。これは私が混乱しているところです。私は新しいPythonユーザーです。 Aの数字はFruitsと同じ位置にあります(Aの最初の数字はりんごの数です)。これにはsum(A)を使用する必要がありますか?配列を合計して辞書で掛け算する

ご迷惑をおかけいたします。ここにいくつかの明確さがあります。私はフルーツを持っており、私はフルーツの数が各人がそのタイプに基づいている。 、Aによって、

apple = 12 
orange = 6 
banana = 16 
kiwi = 13 

は今、私は複数のこれらの数字にしたいが、Aの最初の番号を念頭に置いている:私は、私が手にするように、Bの各果物の種類の値の全てを合計したいのです私は推測

Solution = [48,18,160,104] #solution order is apple, orange, banana, kiwi 
+4

質問が明確ではありません。このデータの期待される結果は? – zvone

+0

あなたが手でそれを働かせるように数学を表示し、我々は助けることができるでしょう – ccarton

+0

ありがとう。私は今私の質問を更新するために取り組んでいます。 –

答えて

3

Aでコストによってあなたは(Bで)一人一人のために果物の合計をmultplyしたいと仮定すると、あなたは以下のリストの内包を行うことができます。

>>> [cost * sum(B[fruit].values()) for cost, fruit in zip(A, Fruits)] 
[48, 18, 160, 104] 
0
fruit_costs = {fruit_name:fruit_cost for fruit_name,fruit_cost in zip(Fruits,A) 
for fruit in Fruits: 
    print "Fruit:",fruit,"=",sum(B[fruit].values())*fruit_costs[fruit] 

:新しい配列を取得するようにリンゴ、オレンジはその後、ある、と?

+0

名前で和を求めない限り、これ以外の方法はありません(ここでは 'Bill'、' Jan'、 'Frank')。 –

0

マージ一つの大きな辞書にすべてのもの。ここではすべてが果物のプロパティだけです:「果物」(「果物」の古い値を失う)に

>>> for i, fruit in enumerate(fruits): 
>>>  B[fruit]['cost'] = A[i] 
>>> B 
{'banana': {'Frank': 2, 'Jan': 6, 'Bill': 8, 'cost': 10}, 'apple': {'Frank': 5, 'Jan': 3, 'Bill': 4, 'cost': 4}, 'orange': {'Frank': 5, 'Jan': 1, 'Bill': 0, 'cost': 3}, 'kiwi': {'Frank': 7, 'Jan': 2, 'Bill': 4, 'cost': 8}} 

名前の変更「B」:

>>> fruits = B 
各果物

計算果物コスト:

>>> for fruitname in fruits: 
...  fruit = test.B[fruitname] 
...  fruit['total'] = fruit['Frank'] + fruit['Bill'] + fruit['Jan'] 
...  fruit['total cost'] = fruit['cost'] * fruit['total'] 
... 
>>> fruits 
{'banana': {'total': 16, 'Frank': 2, 'Jan': 6, 'total cost': 160, 'Bill': 8, 'cost': 10}, 'apple': {'total': 12, 'Frank': 5, 'Jan': 3, 'total cost': 48, 'Bill': 4, 'cost': 4}, 'orange': {'total': 6, 'Frank': 5, 'Jan': 1, 'total cost': 18, 'Bill': 0, 'cost': 3}, 'kiwi': {'total': 13, 'Frank': 7, 'Jan': 2, 'total cost': 104, 'Bill': 4, 'cost': 8}} 

は、総コストを計算します。

>>> total = sum(fruits[fruit]['total cost'] for fruit in fruits) 

それとも、Pythonのに新しいしているので、その最後の行が厄介であるならば、あなたはにそれを展開することができます。

>>> total = 0 
>>> for fruitname in fruits: 
...  fruit = fruits[fruitname] 
...  total += fruit['total cost'] 
... 

いずれかの方法:

>>> total 
330 
関連する問題