2024-04-26 23:56:12 发布
网友
当使用字典时,我发现自己想要迭代这些值并以某种方式更改它们。我一直在为myDict.keys()上的循环编写代码,然后对myDict['key']进行更改。特别是如果我需要在每次迭代中对值进行多次更改,我最终会输入大量详细的括号语法,以便在字典中反复获得相同的值。生成嵌套对象只会使问题变得更糟。即使值的类型是不可变的,在字典中为值创建“别名”或“引用”的最佳实践是什么?你知道吗
myDict.keys()
myDict['key']
只需将对象存储在变量中。它将引用字典中存储的完全相同的值。你知道吗
x = dictionary['nested']['keys'] # Do stuff with x
如果它是可变对象,那么对x所做的任何更改都将影响字典中的值。如果它是一个不可变的对象,你无论如何也不能做任何更改,所以这无关紧要。你知道吗
x
如果希望能够实际设置dictionary引用的不可变对象,但又不希望一直引用dictionary键,那么可以使用operator和functools库动态地使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}}
只需将对象存储在变量中。它将引用字典中存储的完全相同的值。你知道吗
如果它是可变对象,那么对
x
所做的任何更改都将影响字典中的值。如果它是一个不可变的对象,你无论如何也不能做任何更改,所以这无关紧要。你知道吗如果希望能够实际设置dictionary引用的不可变对象,但又不希望一直引用dictionary键,那么可以使用operator和functools库动态地使getter和setter成为部分函数对象
相关问题 更多 >
编程相关推荐