【发布时间】:2012-01-21 20:45:04
【问题描述】:
我正在尝试为两个字典编写一个包装器,以使它们看起来像一个字典(仅供阅读;写作应该引发异常)。
我这样做是为了节省内存,因为其他地方需要原始字典之一。我还认为,如果要查找组合字典中不到一半的元素,它比合并字典要快。
这是我的尝试:
class LogicalMerge:
def __init__(self, d1, d2):
#d1 and d2 are dictionaries
self.d1 = d1
self.d2 = d2
def __getitem__(self, x):
if x in self.d1:
return self.d1[x]
else:
return self.d2[x]
d1 = {1:2, 3:4}
d2 = {5:10}
d = LogicalMerge(d1, d2)
d[1] # == 2
d[5] # == 10
这种方法是否存在任何设计、技术或性能问题?
【问题讨论】:
-
两个dict之间会有不对称吗?喜欢一个比另一个长或更多使用?或者像上次使用的可能会再次使用?
-
将在别处重复使用的是
d2。d1除了在LogicalMerge.__init__之外,在任何地方都没有使用(也只有一次)。除此之外,我不能说哪个字典更大,它们将按什么顺序被访问等等。
标签: python performance python-3.x