2016-09-29 69 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}} 

我试图总结在所有的水果和乘上B.我无法做这方面的一个就是数字数组和B是字典。这是我感到困惑的地方。我是一个新的Python用户。 A中的数字与水果的相同位置(A中的第一个数字是苹果的数量)。这涉及使用总和(A)?总结了一个数组,然后乘以一个字典

对不起,缺乏细节的人。这是一些清晰的。我有水果,每个人都有不同类型的水果。我想总结所有的每种水果类型的值在B这样的,我得到:

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

现在,我想多这些数字,由A,但同时要注意的是,第一个数字在A,是苹果,然后是橙色,等等,以得到一个新的数组:

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

的问题是不明确的。这些数据的预期结果是什么? – zvone

+0

显示数学,你可以手工操作,我们将能够提供帮助 – ccarton

+0

谢谢。我现在正在努力更新我的问题。 –

回答

3

假设你想multply成果的总和每个人(在B)由成本A,你可以做以下列表理解:

>>> [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

我没有看到任何其他的方式来做到这一点,除非他们想要名称的总和(例如'比尔','扬'和'弗兰克')。 –

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