gpt4 book ai didi

python - 使 dic 项目引用列表项目?

转载 作者:太空宇宙 更新时间:2023-11-04 09:17:35 24 4
gpt4 key购买 nike

这是我的问题:

>>> row0 = [0, 0, 0]
>>> row1 = [0, 0, 0]
>>> field = {'hor' : (row0[0], row1[0])}
>>> field
{'hor': (0, 0)}
>>> row0[0] = 1
>>> field
{'hor': (0, 0)}

我真正想要的是:

>>> field
{'hor': (1, 0)}

我理解这种行为,但我该如何破解它呢?

我能想到的唯一方法是:

我可以将项目的 ID 存储在字典中,如下所示:

row0 = [0, 0]
row1 = [0, 0]
field = {'hor' : (id(row0[0]), id(row1[0]))}

但这里的问题是通过 id 访问变量(我只需要读取权限)。我用谷歌搜索了一下,发现唯一可能的解决方案是使用 globals().items(),就像这样:

for key, value in globals().items(): print key, value, id(value)

我希望有人对我的问题有更好的解决方案。提前致谢!

编辑:

抱歉,第一个代码示例有点太简单了。我的情况更像上面的例子。

最佳答案

更简单的方法 Just Works:

>>> row = [0, 0, 0] # creating a list object
>>> field = {'row0' : row} # creating a dict with a reference to the list
>>> field # let's see...
{'row0': [0, 0, 0]} # ... looks like this
>>> row[0] = 1 # modifying the list through the name "row"
>>> field
{'row0': [1, 0, 0]} # ... hey, it got modified!
>>> field["row0"][1] = 2 # modifying the list through the dict
>>> row # let's see again...
[1, 2, 0] # ... hey, modified again!

在字典中存储对列表本身的引用,因此 field["row0"]row 都是对同一个列表对象的引用,因此修改一个将修改另一个。

关于python - 使 dic 项目引用列表项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7040136/

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