将C++映射转换为python字典

Translate C++ map to python dictionary

本文关键字:python 字典 转换 C++ 映射      更新时间:2023-10-16

我正在尝试将用c ++编写的if-else语句转换为相应的python代码块。对于C++地图 dpt2,我正在尝试翻译:

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() 对象处理的内容?

首先,在C++中,你会把它写成:

dpt[key_t] += rat;

这将只执行一次地图查找 - 与您编写的代码相反

,在key_t不在地图中的情况下执行 2 次查找,在地图中的情况下执行 3 次查找。<小时 />

在 Python 中,你会以大致相同的方式编写它 - 假设你声明dpt是正确的:

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

像这样的东西?

dpt2[key_t] = dpt2.get(key_t, 0) + rat