Python字典对邻居字典元素的引用
我正在尝试创建以下内容:Python字典对邻居字典元素的引用,python,dictionary,Python,Dictionary,我正在尝试创建以下内容: dictionary = { 'key1': ['val1','val2'], 'key2': @key1 } 其中@key1是对字典['key1']的引用。 提前感谢您。使用新课程: class DictRef(object): def __init__(self, d, key): self.d, self.key = d, key d = {} d.update({ 'key1': ['val1','val2'], 'key
dictionary = {
'key1': ['val1','val2'],
'key2': @key1
}
其中@key1是对字典['key1']的引用。
提前感谢您。使用新课程:
class DictRef(object):
def __init__(self, d, key): self.d, self.key = d, key
d = {}
d.update({
'key1': ['val1','val2'],
'key2': DictRef(d, 'key1')
})
请注意奇怪的语法,因为您无法知道要在哪个词典中创建
DictRef
我将扩展Aaron Digulla的版本。他现在所拥有的在这里复制:
class DictRef(object):
def __init__(self, d, key): self.d, self.key = d, key
d = {}
d.update({
'key1': ['val1','val2'],
'key2': DictRef(d, 'key1')
})
我假设他希望复制真正的引用语义,因此访问'key2'
将始终为您提供一种方法,以获取'key1'
作为值的任何内容。问题在于d['key1']
是一个列表
,d['key2']
是一个DictRef
。因此,要获得'key1'
的“值”,您只需执行d['key1']
,但对于'key2'
您必须执行d[d['key2'].key]
。此外,您不能拥有对正常工作的引用的引用,它将成为d[d[key2'].key].key]
。如何区分引用值和常规值?可能是通过使用isinstance(v,DictReference)()进行类型检查
所以我有一个解决所有这些问题的建议
就我个人而言,我不明白为什么真正的引用语义是必要的。如果它们看起来是必要的,可以通过重组问题或问题的解决方案使它们变得不必要。甚至可能根本不需要它们,一个简单的d.update(key2=d['key1'])
就可以解决这个问题
无论如何,对于该提议:
class DictRef(object):
def __init__(self, d, key):
self.d = d
self.key = key
def value(self):
return self.d[self.key].value()
class DictVal(object):
def __init__(self, value):
self._value = value
def value(self):
return self._value
d = {}
d.update(
key1=DictVal(['val1', 'val2']),
key2=DictRef(d, 'key1')
)
现在,为了获得任何键的值,不管它是否是引用,只需执行
d[k].value()
。如果存在对引用的引用,它们将在链中正确地取消引用。如果它们形成一个非常长或无限长的链,Python将因过度递归而出现运行时错误而失败。好吧,既然不引用d是不可能的,我们不妨执行d={'key1':[…]};d、 更新({'key2':d['key2']})
。如果执行类似于字典['key1']=4的操作,会发生什么?键2应该包含4,还是仍然引用原始列表?与此问题类似,尽管后来发布: