如何在Python中的dict中获取dict的路径?
通过添加一些数据生成字典:如何在Python中的dict中获取dict的路径?,python,Python,通过添加一些数据生成字典: some_dict = {'some_value1': {}, 'dict1': {'qwerty': None, 'bar': {}}} 我知道我可以使用更新方法在那里添加一些数据: some_dict['dict1']['bar'].update({'some_key': value}) 但如果代码的一部分不知道更新“bar”的正确方法,该怎么办? 比如: 我怎样才能正确地更新它?所以我想澄清你的问题。问题是您在字典中有一个字典(即,totall_dict={
some_dict = {'some_value1': {}, 'dict1': {'qwerty': None, 'bar': {}}}
我知道我可以使用更新方法在那里添加一些数据:
some_dict['dict1']['bar'].update({'some_key': value})
但如果代码的一部分不知道更新“bar”的正确方法,该怎么办?
比如:
我怎样才能正确地更新它?所以我想澄清你的问题。问题是您在字典中有一个字典(即,
totall_dict={…,'internal_dict':{'foo':4}}
),您希望函数在不传入totall_dict
的情况下更新'foo'?即下面的函数
def func1(dict):
dict['foo'] = 6
如果是这样的话,那就没有太大问题了。Python使用指针,因此如果您传递func1(totally_dict['internal_dict'])
,那么它将执行您想要的操作。实际上,您可以设置一个变量来指向内部字典。当您更新新变量时,它还将更新总目录
我希望这有帮助。如果您想知道其他python字典问题,
我的测试是通过指针来确保python是正确的
这也是一本非常好的python教科书:
希望有帮助 据我所知,没有标准的Python函数可以满足您的需要。您需要自己实现某种搜索算法。从广义上讲,你可以选择一种策略或一种策略 前者的一种可能实施方式是:
some_dict = {'some_value1': {}, 'dict1': {'qwerty': None, 'bar': {}}}
def get_nested_dict(d, name):
stack = [d]
while stack:
for k, v in stack.pop().items():
if k == name:
return v
if isinstance(v, dict):
stack.append(v)
print(some_dict)
get_nested_dict(some_dict, 'bar')['new'] = 1
print(some_dict)
制作:
{'some_value1': {}, 'dict1': {'qwerty': None, 'bar': {}}}
{'some_value1': {}, 'dict1': {'qwerty': None, 'bar': {'new': 1}}}
注意,您不应该使用
.update
修改单个键。只需使用some-dict[some-key]=some-value
您的意思是要通过some-dict
搜索bar
?或者你的意思是你想用一个变量来代替?
?简而言之,你不能。您必须遍历整个字典以找到所需的键,或者维护另一个包含每个键路径的字典。无论如何,如果您不知道dict内容,那么您必须搜索数据结构。这并不理想。你应该构建你的程序,使其不必这样做。这听起来像是一个x-y问题。你想解决的真正问题是什么?gnahum,我会看看你提供的链接,事实上我选择的方式太复杂了。正在寻找其他方法来重新编写这部分代码。谢谢你的帮助。
{'some_value1': {}, 'dict1': {'qwerty': None, 'bar': {}}}
{'some_value1': {}, 'dict1': {'qwerty': None, 'bar': {'new': 1}}}