从python中存储键树的数组中获取值



我有一个数组,用于存储字典中的键树。例如

person_dict = [{"person": {"first_name": "John", "age_of_children": [1, 8, 13]}}, ...]

key_tree = [0, "person", "first_name"]

key_tree = [0, "person", "age_of_children"]

这个数组计数包含一个或多个项目。

在这种情况下,我想通过动态使用key_tree数组从person_dict,"John"获得值。然后我想为它设置一个不同的值。

您可以尝试以下操作:

def get_value(d, key_list):
for key in key_list:
d = d[key]
return d

def set_value(d, key_list, value):
res = d
*keys, last_key = key_list
for key in keys:
d = d[key]
d[last_key] = value
return res

person_dict = [{"person": {"first_name": "John", "age_of_children": [1, 8, 13]}}]
key_tree = [0, "person", "first_name"]
print(get_value(person_dict, key_tree))
print(set_value(person_dict, key_tree, "John2"))

输出:

John
[{'person': {'first_name': 'John2', 'age_of_children': [1, 8, 13]}}]

获取值只是使用get_value,这是相当简单的。在set_value中,您需要迭代直到最后一个键之前,以便您可以为最后一个对象分配新值。在for循环之后,d是最后一个容器(字典或列表或任何可下标的对象)对象,您可以用value的值更新last_key的值。res = d行是必需的,因为你需要有一个对最外层容器的引用,否则在for循环之后,你只有最后一个内部容器。

person_dict['person'].update({'first_name':'Ahmad'})

person_dict[key_tree[0]].update({key_tree[1]: 'Ahmad'})

相关内容

  • 没有找到相关文章

最新更新