当dict或list值是不可变对象时获取对它的“引用”

2024-04-26 23:56:12 发布

您现在位置:Python中文网/ 问答频道 /正文

当使用字典时,我发现自己想要迭代这些值并以某种方式更改它们。我一直在为myDict.keys()上的循环编写代码,然后对myDict['key']进行更改。特别是如果我需要在每次迭代中对值进行多次更改,我最终会输入大量详细的括号语法,以便在字典中反复获得相同的值。生成嵌套对象只会使问题变得更糟。即使值的类型是不可变的,在字典中为值创建“别名”或“引用”的最佳实践是什么?你知道吗


Tags: 对象key代码类型字典方式语法keys
1条回答
网友
1楼 · 发布于 2024-04-26 23:56:12

只需将对象存储在变量中。它将引用字典中存储的完全相同的值。你知道吗

x = dictionary['nested']['keys']
# Do stuff with x

如果它是可变对象,那么对x所做的任何更改都将影响字典中的值。如果它是一个不可变的对象,你无论如何也不能做任何更改,所以这无关紧要。你知道吗

如果希望能够实际设置dictionary引用的不可变对象,但又不希望一直引用dictionary键,那么可以使用operatorfunctools库动态地使getter和setter成为部分函数对象

from operator import getitem, setitem
from functools import partial

d = {'a': {'b': 1}}
getter = partial(getitem, d['a'], 'b')
setter = partial(setitem, d['a'], 'b')

print getter()
# 1
setter(2)
print d
# {'a': {'b': 2}}

相关问题 更多 >