正如在評論中提到由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