Python——第二章:字典的循环、嵌套、"解构"(解包)

 字典进阶操作 -- 循环和嵌套

字典的循环

我们先看直接打印字典的样子,会分别对每对key:value进行打印,并使用,分隔他们

dic = {
    "赵四": "特别能歪嘴",
    "刘能": "老, 老四啊...",
    "大脚": "跟这个和那个搞对象",
    "大脑袋": "瞎折腾....",
}
print(dic)

#输出结果
{'赵四': '特别能歪嘴', '刘能': '老, 老四啊...', '大脚': '跟这个和那个搞对象', '大脑袋': '瞎折腾....'}

1. 可以用for循环, 直接拿到key

for key in dic:
    print(key,dic[key])

#输出结果
赵四 特别能歪嘴 
刘能 老, 老四啊...
大脚 跟这个和那个搞对象
大脑袋 瞎折腾....

这里key也不需要特殊指定,key就代表其中的赵四、刘能、大脚、大脑袋

同样,对应的value也能够通过dic[key]拿到结果.

2. 希望把所有的key全都保存在一个列表中

直接用字典命令dic.keys()拿到key的值

print(dic.keys())

#输出结果
dict_keys(['赵四', '刘能', '大脚', '大脑袋'])

进而可以直接把他们塞进列表中

print(list(dic.keys()))  # 列表拿到所有的key了

#输出结果
['赵四', '刘能', '大脚', '大脑袋']

3.希望把所有的value全都保存在一个列表中

直接用字典命令dic.valus()value都放在一个列表中

print(list(dic.values()))
#输出结果

4. 直接拿到字典中的keyvalue

这里先扩展讲"解构"(解包)

"解构"(解包)是Python中提取打包数据结构(如元组、列表、集合和字典)元素的一种方法。下面是如何对这四种数据结构进行解包:

  1. 元组(Tuple):

    tup = (1, 2, 3, 4)  # 创建一个元组  
    a, b, c, d = tup  # 解包元组  
    print(a)  # 输出:1  
    print(b)  # 输出:2  
    print(c)  # 输出:3  
    print(d)  # 输出:4
  2. 列表(List):

    lst = [1, 2, 3, 4]  # 创建一个列表  
    a, b, c, d = lst  # 解包列表  
    print(a)  # 输出:1  
    print(b)  # 输出:2  
    print(c)  # 输出:3  
    print(d)  # 输出:4
  3. 集合(Set):
    需要注意的是,集合是无序的,因此解包的结果可能不按照你预期的顺序给出(每次执行结果都不一样)。此外,集合元素不能是可变对象,如列表或字典。

    set_data = {'w', "x", "y", "z"}  # 创建一个集合
    a, b, c, d = set_data  # 解包集合
    print(a)  # 随机输出一个,取决于集合的内部实现
    print(b)  # 同上
    print(c)  # 同上
    print(d)  # 同上
    
    #执行结果
    y
    w
    x
    z
  4. 字典(Dictionary):

    解包字典的值

    dict_data = {'name': 'Alice', 'age': 30}  # 创建一个字典  
    a, b = dict_data.values()  # 解包字典的值  
    print(a)  # 输出:Alice  
    print(b)  # 输出:30

    或者解包字典的键:

    dict_data = {'name': 'Alice', 'age': 30}  # 创建一个字典  
    key1, key2 = dict_data.keys()  # 解包字典的键  
    print(key1)  # 输出:name
    print(key2)  # 输出:age

说完"解构"(解包),我们在说一下这个dic.items()命令效果

dic = {
    "赵四": "特别能歪嘴",
    "刘能": "老, 老四啊...",
    "大脚": "跟这个和那个搞对象",
    "大脑袋": "瞎折腾....",
}
print(dic.items())    #确定,dic.items()中只有两项元素

#输出结果
dict_items([('赵四', '特别能歪嘴'), ('刘能', '老, 老四啊...'), ('大脚', '跟这个和那个搞对象'), ('大脑袋', '瞎折腾....')])

通过使用dic.items()再说结合for循环,通过解构原理,直接拿到key和value

for item in dic.items():
    key,value = item
    print(key,value)
    
#输出结果
赵四 特别能歪嘴
刘能 老, 老四啊...
大脚 跟这个和那个搞对象
大脑袋 瞎折腾....

最终,我们拿到最简化的版本(*重点记住)

for k, v in dic.items():  # 可以直接拿到字典的所有的key和value
    print(k, v)

字典的嵌套

wangfeng = {
    "name": "汪峰",
    "age": 18,
    "wife": {
        "name": "章子怡",
        "hobby": "演戏",
        "assistant": {
            "name": "樵夫",
            "age": 19,
            "hobby": "打游戏"
        }
    },
    "children": [
        {"name": "孩儿1", "age": 13},
        {"name": "孩儿2", "age": 10},
        {"name": "孩儿3", "age": 8},
    ]
}

查询:汪峰妻子的助手的名字

name = wangfeng['wife']['assistant']['name']
print(name)

#输出结果
樵夫

修改:给汪峰的第二个孩子加1岁

wangfeng['children'][1]['age'] = wangfeng['children'][1]['age'] + 1
print(wangfeng)

#输出结果
{'name': '汪峰', 'age': 18, 'wife': {'name': '章子怡', 'hobby': '演戏', 'assistant': {'name': '樵夫', 'age': 19, 'hobby': '打游戏'}}, 'children': [{'name': '孩儿1', 'age': 13}, {'name': '孩儿2', 'age': 11}, {'name': '孩儿3', 'age': 8}]}

 

posted @ 2023-11-01 15:21  Magiclala  阅读(636)  评论(0编辑  收藏  举报