Python创建嵌套字典

原始人方法:

{'LoginPage':{
                                            'login':'HomePage',
                                            'other':'ErrorPage',
                                        },
                            'HomePage':{
                                            'goto_user':'UserPage',
                                            'goto_good':'GoodPage',
                            }

    }

网上看到的大佬方法,真的牛
参考 https://www.cnblogs.com/mahailuo/p/10201556.html

import collections
import json
tree = lambda: collections.defaultdict(tree)
    dic_po = tree()
    dic_next = {
            'login': 'HomePage',
            'other': 'ErrorPage',
            'goto_good':'GoodPage',
            'goto_other':'OtherPage'
    }
    for key,value_list in dic.items():
        for value in value_list:
            next_po = dic_next[value]
            print(next_po)
            dic_po[key][value]=next_po
    return json.dumps(dic_po)

输入:

{'LoginPage': ['login','other'],'HomePage':['goto_good','goto_other']}

输出:

{"LoginPage": {"login": "HomePage", "other": "ErrorPage"}, "HomePage": {"goto_good": "GoodPage", "goto_other": "OtherPage"}}
### Python嵌套字典的使用方法 #### 访问嵌套字典中的值 在 Python 中,可以通过连续使用键名来访问嵌套字典中的值。例如: ```python nested_dict = { 'level1': { 'level2': { 'key': 'value' } } } print(nested_dict['level1']['level2']['key']) # 输出: value ``` 如果不确定嵌套层数或者某些键可能不存在,则可以使用 `get()` 方法[^1]。 #### 修改嵌套字典中的值 要修改嵌套字典中的值,可以直接赋值给指定路径下的键。例如: ```python nested_dict = { 'level1': { 'level2': { 'key': 'old_value' } } } nested_dict['level1']['level2']['key'] = 'new_value' print(nested_dict['level1']['level2']['key']) # 输出: new_value ``` 对于深层嵌套的情况,建议先检查目标键是否存在再进行修改[^3]。 #### 添加新键值对 向嵌套字典中添加新的键值对也很简单,只需按照所需的层级结构定义即可。例如: ```python nested_dict = {} # 创建多级嵌套 nested_dict.setdefault('level1', {}).setdefault('level2', {})['key'] = 'value' print(nested_dict) # 输出: {'level1': {'level2': {'key': 'value'}}} ``` 这里使用了 `setdefault` 方法以确保中间层级不会因为缺失而引发错误[^4]。 #### 删除嵌套字典中的项 删除嵌套字典中的某一项可以使用 `del` 关键字或 `pop()` 函数完成。需要注意的是,在执行删除之前应确认该条目确实存在于当前上下文中以免抛出异常。示例如下: ```python nested_dict = { 'level1': { 'level2': { 'key_to_remove': 'value', 'keep_key': 'another_value' } } } if 'key_to_remove' in nested_dict['level1']['level2']: del nested_dict['level1']['level2']['key_to_remove'] print(nested_dict) # 输出: {'level1': {'level2': {'keep_key': 'another_value'}}} ``` #### 合并两个嵌套字典 当需要合并两个具有相同结构的嵌套字典时,可以递归地遍历每一个子节点并将它们的内容融合在一起。下面是一个简单的实现方式: ```python def merge_dicts(d1, d2): for key, value in d2.items(): if isinstance(value, dict): # 如果遇到另一个字典则继续向下探索 node = d1.setdefault(key, {}) merge_dicts(node, value) else: d1[key] = value dict_a = {'common': {'shared': 1}, 'uniqueA': 2} dict_b = {'common': {'extraB': 3}, 'uniqueB': 4} merge_dicts(dict_a, dict_b) print(dict_a) # 输出: {'common': {'shared': 1, 'extraB': 3}, 'uniqueA': 2, 'uniqueB': 4} ``` 此函数会将第二个参数的所有内容安全地融入第一个参数之中而不破坏原有数据[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值