gpt4 book ai didi

对邻居字典元素的 Python 字典引用

转载 作者:太空狗 更新时间:2023-10-29 21:41:11 24 4
gpt4 key购买 nike

我正在尝试创建以下内容:

dictionary = {
'key1': ['val1','val2'],
'key2': @key1
}

其中@key1 是对字典['key1'] 的引用。提前谢谢你。

最佳答案

我会扩展 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'] 是一个 list,而 d['key2'] 是一个 DictRef。因此,要获取 'key1' 的“值”,您需要做的就是 d['key1'],但对于 'key2'你必须做 d[d['key2'].key]。此外,您不能引用正常工作的引用,它会变成 d[d[d['key2'].key].key]。您如何区分引用值和常规值?可能是通过 isinstance(v, DictReference) ( ew ) 进行类型检查。

所以我有一个解决所有这些问题的建议。

就我个人而言,我不明白为什么需要真正的引用语义。如果它们看起来是必要的,可以通过重构问题或解决问题的方法使它们变得不必要。甚至可能它们从来都不是必需的,一个简单的 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 将因过度递归而失败并出现 RuntimeError。

关于对邻居字典元素的 Python 字典引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3531198/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com