我需要一个函数来更改复合字典中的一个项。我试过像..。
def SetItem(keys, value):
item = self.dict
for key in keys:
item = item[key]
item = value和
SetItem(['key1', 'key2'], 86)它应该等价于 this . effect‘has 1’= 86,但是这个函数没有任何效果。
发布于 2012-09-18 20:39:41
差不多了。你实际上想做这样的事情:
def set_keys(d, keys, value):
item = d
for key in keys[:-1]:
item = item[key]
item[keys[-1]] = value或者像这样递归地:
def set_key(d, keys, value):
if len(keys) == 1:
d[keys[0]] = value
else:
set_key(d[keys[0]], keys[1:], value)不过马辛是对的。您可能真的希望合并一些更严格的内容,对缺少的键/缺失的dicts进行一些错误处理。
发布于 2012-09-18 20:42:12
setItem = lambda self,names,value: map((lambda name: setattr(self,name,value)),names)发布于 2012-09-18 20:43:06
显然,如果键列表中有一个非dict值,这将中断.你会想要处理的。事实上,由于这个原因,一个显式的循环可能会更好,但是你明白了。
https://stackoverflow.com/questions/12484597
复制相似问题