python中的字典及嵌套遍历

  • Post category:Python

下面是关于Python中字典及嵌套遍历的完整攻略。

Python中的字典

字典是Python中一个非常有用的数据结构,它可以存储键值对。字典中的键必须是唯一的,而值则可以不唯一。字典使用大括号{}来表示,其中每一对键值对使用冒号:来分隔,各个键值对之间使用逗号来分隔。如下所示:

my_dict = {"name": "Tom", "age": 25, "gender": "male"}

上面的代码创建了一个字典对象my_dict,其中包含三个键值对,分别是name、age和gender。在字典中,我们可以通过键来获取其对应的值,如下所示:

print(my_dict["name"])  # 输出 Tom

以上代码通过操作my_dict[“name”]获取了字典对象my_dict中键为”name”的值,并将结果输出。

嵌套遍历字典

当字典中的值还是一个字典时,我们就需要进行嵌套遍历了。下面通过一个示例来演示如何进行嵌套遍历:

my_dicts = [
    {"name": "Tom", "age": 25, "gender": "male"},
    {"name": "Mary", "age": 30, "gender": "female"}
]

for my_dict in my_dicts:
    for key, value in my_dict.items():
        print("{}: {}".format(key, value))
    print("------------------")

上面的代码定义了一个包含两个字典对象的列表my_dicts,其中每个字典对象都包含name、age和gender三个键值对。接着使用两个for循环进行嵌套遍历,首先遍历my_dicts列表中的每一个字典对象,然后遍历字典对象中的每一个键值对,将其以key: value的形式输出。最后再输出一条分割线,以便输出结果更加清晰。

执行以上代码,输出结果如下:

name: Tom
age: 25
gender: male
------------------
name: Mary
age: 30
gender: female
------------------

可以看到,上述代码中嵌套遍历的结果非常清晰和易于理解。

再来看一个更加复杂的嵌套遍历。假设现在有一个字典对象my_dict,其中包含多个字典对象作为值,这些字典对象中又包含多个列表作为值,这些列表中又包含多个字典对象作为值……这样的结构是非常复杂的,但是我们可以使用递归的方式进行嵌套遍历,如下所示:

my_dict = {
    "name": "Tom", 
    "age": 25, 
    "gender": "male", 
    "info": {
        "address": "Shanghai",
        "work": {
            "company": "ABC",
            "department": "R&D",
            "projects": [
                {"name": "project1", "members": ["Tom", "Jerry"]},
                {"name": "project2", "members": ["Mary", "John"]}
            ]
        }
    }
}

def print_dict(dict_obj, level=0):
    for key, value in dict_obj.items():
        if isinstance(value, dict):
            print("{}{}:".format(" " * 4 * level, key))
            print_dict(value, level + 1)
        elif isinstance(value, list):
            for item in value:
                print_dict(item, level + 1)
        else:
            print("{}{}: {}".format(" " * 4 * level, key, value))

print_dict(my_dict)

上述代码中定义了一个名为print_dict的函数,该函数接收一个字典参数和一个层级参数level。函数首先遍历字典中的所有键值对,如果值是字典类型,则继续进行递归遍历;如果值是列表类型,则遍历列表中每一个元素并进行递归遍历;否则,直接输出键值对。函数中的level参数用于进行缩进,以便输出结果更加清晰。

执行以上代码,输出结果如下:

name: Tom
age: 25
gender: male
info:
    address: Shanghai
    work:
        company: ABC
        department: R&D
        projects:
            name: project1
            members:
                Tom
                Jerry
            name: project2
            members:
                Mary
                John

可以看到,以上代码成功地遍历了一个嵌套字典,并将结果输出。这充分说明了Python语言对于复杂嵌套结构的支持能力。

希望以上讲解对您有所帮助。