You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 2.7中如何动态访问并打印嵌套字典的键与值?

在Python 2.7中动态遍历并打印嵌套字典的键值

嘿,针对你提出的动态访问嵌套字典的需求,我来分享一个实用的方案。首先得说,你原来的代码是静态指定层级访问的,要是字典结构变复杂(比如嵌套更深、或者有列表嵌套),这种写法就不够灵活了。下面我们用递归的方式实现动态遍历,不管嵌套多少层都能处理:

1. 递归遍历函数实现

这个函数会递归处理字典和列表类型,把所有键值对(包括嵌套的)都打印出来,还会标注层级方便查看:

def print_nested_structure(data, indent=0):
    indent_str = "  " * indent
    if isinstance(data, dict):
        # Python2.7用iteritems()遍历字典更高效
        for key, value in data.iteritems():
            print("{0}{1}:".format(indent_str, key))
            # 递归处理嵌套的值
            print_nested_structure(value, indent + 1)
    elif isinstance(data, list):
        # 处理嵌套的列表结构
        for index, item in enumerate(data):
            print("{0}[{1}]".format(indent_str, index))
            print_nested_structure(item, indent + 1)
    else:
        # 基础数据类型直接打印值
        print("{0}{1}".format(indent_str, data))

2. 结合你的JSON示例使用

假设你已经加载了JSON数据,直接调用这个函数就能遍历所有内容:

import json

# 加载JSON文件(适配你的sample_dict.json结构)
with open('sample_dict.json', 'r') as json_file:
    json_data = json.load(json_file)

# 调用函数遍历整个嵌套结构
print("完整遍历结果:")
print_nested_structure(json_data)

3. 代码说明

  • 递归逻辑:函数会自动判断当前数据的类型——如果是字典就遍历键值对,如果是列表就遍历索引元素,遇到字符串、数字这类基础类型就直接打印。
  • 层级缩进:用indent参数控制缩进量,让打印结果的层级结构一目了然,方便你对应原字典的嵌套关系。
  • Python2.7适配:特意用了dict.iteritems(),这是Python2中遍历字典键值对的高效方式(Python3中统一为items())。

举个简化的示例,如果你的嵌套数据是这样:

test_data = {
    "sample_dict": [
        {
            "dict_id": 1,
            "person": {"person_id": "P001", "name": "Alice"},
            "family": {"members": ["Bob", "Charlie"]}
        }
    ]
}

调用函数后会输出清晰的层级结果:

完整遍历结果:
sample_dict:
  [0]
    dict_id:
      1
    person:
      person_id:
        P001
      name:
        Alice
    family:
      members:
        [0]
          Bob
        [1]
          Charlie

这样不管你的字典嵌套多深,或者里面包含列表结构,都能完整遍历并打印所有键和值啦~

内容的提问来源于stack exchange,提问作者cheebdragonite

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:09:02