在Python(3.7及以上版本)中,我想获取到字典键的引用。更确切地说,在以下代码中,假设d
是一个字符串作为键的字典。变量k
的值可能存储在内存中的两个不同位置(一个由字典指向,另一个由k
指向),而变量v
的值只存储在一个位置(由字典指向的位置)。
# d is a dict
# k is a string dynamically constructed, in particular not from iterating over d's keys
if k in d:
v = d[k]
# Now store k and v in other data structures
在我的情况下,字典非常大,字符串键非常长。为了保持内存使用率低,我想在将 k
存储到其他数据结构之前,使用指向 d
使用的相应字符串的指针来替换它 。有没有一种简单的方法来实现这一点,即使用字典的键作为字符串池?
(注:这似乎是过早优化,也许确实是,但作为一个老派的 C 程序员,我做“内存技巧”会睡得更好。开个玩笑,我真的很想出于好奇知道答案,而且我的确要在树莓派上运行代码,可能会遇到内存问题。)
v = d[k]
不会分配更多的内存。它只是创建了一个名为v
的引用,指向d[k]
指向的任何内容。 - DeepSpaced
中使用了非常长的字符串作为键,是否可以同时存储它们的哈希值hash(key)
?这样当k in d
为 True 时,可以将相应的键值对存储到d2[hash(k)] = v
中。 - quamrana