【发布时间】:2019-02-28 03:26:33
【问题描述】:
我想问什么是最便宜的数据类型(就内存消耗和保存/处理它的成本而言)在 python dict 中用作虚拟值(只有 dict 的键对我很重要,值只是占位符)
例如:
d1 = {1: None, 2: None, 3: None}
d2 = {1: -1, 2: -1, 3: -1}
d3 = {1: False, 2: False, 3: False}
这里只有键 (1, 2, 3) 对我有用,值不是所以它们可以是任何值(仅用作占位符。我想知道我应该在这里使用什么虚拟数据。目前我使用无,但不确定它是否是“最便宜”的。
P.S.,我知道仅存储键的最佳选择可能是使用 Set 而不是 dict(带有虚拟值)。但是,我这样做的原因是因为我想使用 SWIG 在 Python 和 C++ 之间交换数据。现在我已经弄清楚如何使用 SWIG 将 Python dict 作为 std::map 传递给 C++,但是找不到任何关于如何将 Python Set 作为 std::set 传递给 C++...
非常感谢您的帮助/指导!
【问题讨论】:
-
提示:
sys.getsizeof(None)返回 16。 -
@Jean-FrançoisFabre 但是只有一个
None对象,而且几乎可以肯定无论如何它都存在。所以它的大小无关紧要。 -
@MartinBonner 是的,没关系
-
您是在问“这些数据结构中的哪一个在 Python 进程的内存中占用的空间最多?”或“当序列化并发送到另一个进程时,这些数据结构中的哪一个在传输过程中具有最小的大小?”?我怀疑这些问题有不同的答案。
-
@Kevin 我认为 OP 不是在谈论跨进程调用——而是在单个进程中在 C++ 和 Python 之间进行调用。