正如在评论中提到由bennofs,你可以使用intern()
以确保相同的字符串存储只有一次:
class InternDict(dict):
def __setitem__(self, key, value):
if isinstance(value, str):
super(InternDict, self).__setitem__(key, intern(value))
else:
super(InternDict, self).__setitem__(key, value)
下面是具有效果的例子:
>>> d = {}
>>> d["a"] = "This string is presumably too long to be auto-interned."
>>> d["b"] = "This string is presumably too long to be auto-interned."
>>> d["a"] is d["b"]
False
>>> di = InternDict()
>>> di["a"] = "This string is presumably too long to be auto-interned."
>>> di["b"] = "This string is presumably too long to be auto-interned."
>>> di["a"] is di["b"]
True
保持第二字典映射值ID(例如哈希)值,在这一个使用值ID。 –
你的数据结构应该支持mutable * values *吗? –
我想你可以存储sys.intern的结果,如果你只想把字符串作为值。 – bennofs