2016-12-14 9 views
0

私は各キーのDecimal値を持つpython defaultdict(list)を持っています。計算に小数点を使う必要があります。リストのデータ型から10進形式に戻すことはできません。辞書に格納されているDecimal値で数値を計算する

私のdefaultdictのサンプル。 defaultdict( '{item1':[Decimal( ' - 232.030449067021')]、 'item2':[Decimal( ' - 647.198253946051')]、 'item3':[Decimal( ' - 626.390228255337')]})

私はこれらの小数点以下の桁をdefaultdictから抜き出して、追加の操作を行う必要があります。たとえば、item1とitem2のDecimal値を追加する必要があるかもしれません。私defaultdictを想定することは、「D」という名前

key1 = 'item1' 
key2 = 'item2' 
value1 = d.get(key1) 
value2 = d.get(key2) 
result = value1 + value2 

は私が)(私はevalのを使用できるように文字列に変換し''.join()を使用してみましたがTypeError: unsupported operand type(s) for -: 'list' and 'list'

を与えている:私は動作しませんので、小数点データ型 の引数が、私は成功し、次の操作を実行して、私がやりたいことができていた文字列またはコードオブジェクト

でなければならないため、動作しません:Pythonは、リストを評価するためにeval()関数を使用してみましたが

私はまだ小数として値を維持しながらこれを行うには簡単な方法があります文字列

key1 = 'item1' 
key2 = 'item2' 
value1 = Decimal(''.join(map(str,d.get(key1)))) 
value2 = Decimal(''.join(map(str,d.get(key2)))) 
result = value1 + value2 

へのマッピングを試してみましたか?

+0

は '[0]'をvalue1 = d.get(KEY1)を試してみてください、しかし、なぜあなたが最初の場所でのリストにそれらを入れていますか? – Bahrom

+0

あなたの値は*単一のDecimalオブジェクト*リストです。 –

+0

'dict'の値として1つの10進数のオブジェクトエントリが必要なときに' list'を値として持つのはなぜですか? –

答えて

0

ディクショナリの値はlistで、Decimalではありません。あなたはそこに含まれる10進値を見つけるために、リストを照会する必要があります。

result = value1[0] + value2[0] 
+0

ありがとう!信じられない私はそれを認識していない... – Musher

関連する問題