2017-10-15 12 views
-1

私はキー付きタプルを持つ辞書を持っています。私は2つのタプルを掛けて、すべての辞書キーに合計したいと思います。Python:辞書内のタプルの積和

私は2つのクラスを作成しました。最初(ExampleBase)は単に変数と辞書を作成します。 2番目の数字(Useful)は辞書を渡して計算を行います。

私は私が現在取得していますエラーが誤って第二のクラス(Useful)からメソッドを呼び出しています信じて:

:「ExampleBase」objestは何の属性「compute_value」を持っていない

をコードはこれを行う必要があります

dictionary = { 
    "key1": (v1, v2), 
    "key2": (v1, v2), 
    "key3": (v1, v2) 
} 

total = key1v1*key1v2 + key2v1*key2v2 + key3v1*key3v2 

class ExampleBase: 
    def __init__(self, company_name="N/A", stock_dict={}): 
     """ 
     class constructor 
     """ 
     self.company_name = company_name 
     self.stock_dict = stock_dict 
     print(self.stock_dict)  
     return 


class Useful(ExampleBase): 
    """ 
    Inherits from ExampleBase class 
    """ 
    def __init__(self, company_name, stock_dict): 
     super().__init__(name) 
     return 


    def compute_value(self, stock_dict): 
     """ 
     Computes value of stk 
     """ 
     sum(v1*v2 for v1,v2 in stock_dict.values()) 
     return 

## 
## Program starts running from here 
## 
if __name__ == "__main__": 
    a = {"10-01-2014":(10, 11.25), "10-02-2014":(11, 12.25), "10-03-2014":(12, 13.25)} 
    b = ExampleBase("Bern", a) 
    b.compute_value(a) 
+0

具体的な例があればわかりやすくなります。 – Elmex80s

+0

'key1v1 * key1v2 + key2v1 * key2v2 + key3v1 * key3v2'、それはどういう意味ですか? – Elmex80s

+0

私の例(辞書a)の場合は、sum = 10 * 11.25 + 11 * 12.25 + 12 * 13.25となります。 –

答えて

0

私はほとんどそこにあなたのcompute_value機能だと思います。私はあなたのコードを完成させる。エラーについては、関数をExampleBaseから呼び出すためです。

class ExampleBase: 
    def __init__(self, company_name="N/A", stock_dict={}): 
     """ 
     class constructor 
     """ 
     self.company_name = company_name 
     self.stock_dict = stock_dict 
     print(self.stock_dict)  
     return 


class Useful(ExampleBase): 
    """ 
    Inherits from ExampleBase class 
    """ 
     def __init__(self, company_name, stock_dict): 
      super().__init__(company_name) 
      return 


     def compute_value(self, stock_dict): 
      """ 
      Computes value of stk 
      """ 
      val = sum(v1*v2 for v1,v2 in stock_dict.values()) 
      return val 

    ## 
    ## Program starts running from here 
    ## 
    if __name__ == "__main__": 
     a = {"10-01-2014":(10, 11.25), "10-02-2014":(11, 12.25), "10-03-2014":(12, 13.25)} 
     b = Useful("Bern", a) 
     value = b.compute_value(a) 
     print(value) 

compute_valueのためのあなたの意図は、あなたがUsefulインスタンスを作成するときに与えられたstock_dictを計算することである場合も、 クラスが良く、このように書きます:あなたのmain

class Useful(ExampleBase): 
    """ 
    Inherits from ExampleBase class 
    """ 
    def __init__(self, company_name, stock_dict): 
     super().__init__(company_name, stock_dict) 
     return 


    def compute_value(self): 
     """ 
     Computes value of stk 
     """ 
     val = sum(v1*v2 for v1,v2 in self.stock_dict.values()) 
     return val 

if __name__ == "__main__": 
    a = {"10-01-2014":(10, 11.25), "10-02-2014":(11, 12.25), "10-03-2014":(12, 13.25)} 
    b = Useful("Bern", a) 
    value = b.compute_value() 
    print(value) 
0

は、これはあなたが探しているものですか?あなたが知っている場合

各キーは長さ2のタプル値を持っているとしている:

そうでない場合
d = {'a': (1, 2), 'b': (3, 4)} 
total = sum(a * b for a, b in d.values()) 
# total => 10 

import operator 
from functools import reduce 
d = {'a': (1, 2), 'b': (3, 4, 5)} 
total = sum(reduce(operator.mul, a, 1) for a in d.values()) 
# total => 62 
+0

私は彼が 'x'の値を掛けたいと思うと思います。 – Elmex80s