2016-09-22 8 views
0

新しい2.7ユーザー。私は、次の辞書を持っている:操作を実行するためのPython辞書のスライシング

dict1 = {'A': {'val1': '5', 'val2': '1'}, 
      'B': {'val1': '10', 'val2': '10'}, 
      'C': {'val1': '15', 'val3': '100'}} 

私が持っている別の辞書私が取得するdict2からdict1にAの値を減算したい

dict2 = {'val1': '10', 'val2': '16'} 

dict3 = {'val1': '5', 'val2': '15'} 
+0

"辞書をnp.array(dict1)を使用して配列に変換しようとしました" - 何をする予定ですか?配列はそれほど機能しません。 – user2357112

+0

これはスライスとは関係ありません。 '[1,2,3,4,5,6]'から '[2,3,4]'を抽出すると、スライスされます。 – Daneel

+0

これらの文字列を数値的に差し引きたいのですか?代わりに値を整数として保存するのはどうですか?これらがカウントの場合、 'Counter'インスタンスを使用します。これらは、ネイティブ*をサポートします。 –

答えて

6

だけのdictの内包表記を使用して辞書を作成します。

d3 = {k: str(int(v) - int(dict1["A"][k])) for k, v in dict2.items()} 
print(d3) 

あなたを与えることになる:dict2からキー/値のペアを超える

{'val2': '15', 'val1': '5'} 

for k, v in dict2.items()を反復処理し、我々はから対応する値にアクセスしますdict1の "A"dict1["A"][k])で減算し、減算します。

このような計算を行う予定がある場合は、文字列ではなく実際のintとして値を格納することもできます。

1

私は理解している場合、あなたの問題は正しく、これはうまくいくはずです:

# dict1 and dict2 have been initialized 
dict3 = {} 
for key in dict2: 
    dict3[key] = str(int(dict2[key])-int(dict1["A"][key])) 
関連する問題