2016-05-23 4 views
0

C++で書かれたif-elseステートメントを、対応するPythonコードの塊に変換しようとしています。 C++地図DPT2のために、私が翻訳しようとしています:C++マップをPython辞書に翻訳する

if (dpt2.find(key_t) == dpt2.end()) { dpt2[key_t] = rat; } 
else { dpt2.find(key_t) -> second = dpt2.find(key_t) -> second + rat; } 

私はC++で超慣れていないんだけど、私の理解では、ということです - >オペレータが参照されているクラスのメソッドの呼び出しに相当しますポインタによって。私の質問は、このコードをPythonのOrderedDict()オブジェクトで処理できるものに変換する方法です。

答えて

1

このようなものはありますか?

あなたにことを書きたい++
dpt2[key_t] = dpt2.get(key_t, 0) + rat 
6

Cでまず第一に、1つだけのマップ検索を行いますそれ

dpt[key_t] += rat; 

- その場合には2つのルックアップを行い、あなたが書いたコードとは対照的に、 key_tは地図にありませんが、その場合は3つのルックアップがあります。


とPythonで、あなたはほぼ同じ方法でそれを書きたい - あなたは正しいことであることをdptを宣言すると仮定すると:

dpt = collections.defaultdict(int) 
... 
dpt[key_t] += rat 
+0

ありがとう!私は元のコードを書いていないので、これに関する私の問題の多くは、ジャンキーコードを理解しようとしています! –

+0

その変換は 'mapped_type {} + rat == mapped_type {rat}'の場合にのみ機能します。もちろん、それは事実であるはずですが、オペレータのオーバーロードで奇妙なことを行う人もいます。 –

関連する問題