• Python Dictionary(字典)进阶内容


    两个字典嵌套,字典2初始化为空字典,在遍历字典1的过程中增加字典2的内容

    A = [1,2,3]
    B = [4,5,6]
    
    dic1 = {'A':A,'B':B}
    dic2 = {}
    print("dic1: ",dic1)
    i =0
    
    for key,val in dic1.items():
        dic2[key+'_Mask'] = i
        i =i+1
    print("dic2: ",dic2)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    输出:

    dic1:  {'A': [1, 2, 3], 'B': [4, 5, 6]}
    dic2:  {'A_Mask': 0, 'B_Mask': 1}
    
    • 1
    • 2

    这种方法适合基于一个字典(keys)生成另外一个字典。

    单空字典,是否可以从空字典开始循环增加内容,NO!

    dic2 = {}
    for key,val in dic2.items():
        dic2[key+'_Mask'] = i
        i =i+1
    print("dic2: ",dic2)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    输出:

    dic2:  {}
    
    Process finished with exit code 0
    
    • 1
    • 2
    • 3

    单非空字典,是否可以循环增加内容,NO!

    A = [1,2,3]
    B = [4,5,6]
    
    dic = {'A':A,'B':B}
    print("dic: ",dic)
    i =0
    
    for key,val in dic.items():
        dic[key+'_Mask'] = i
        i =i+1
    print("dic: ",dic)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    报错如下

    dic1:  {'A': [1, 2, 3], 'B': [4, 5, 6]}
    Traceback (most recent call last):
      File "Test0818.py", line 11, in <module>
        for key,val in dic.items():
    RuntimeError: dictionary changed size during iteration
    
    • 1
    • 2
    • 3
    • 4
    • 5

    单非空字典,增加list()就行

    A = [1,2,3]
    B = [4,5,6]
    
    dic = {'A':A,'B':B}
    print("dic: ",dic)
    i =0
    
    for key,val in list(dic.items()):
        dic[key+'_Mask'] = i
        i =i+1
    print("dic1: ",dic)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    输出

    dic:  {'A': [1, 2, 3], 'B': [4, 5, 6]}
    dic1:  {'A': [1, 2, 3], 'B': [4, 5, 6], 'A_Mask': 0, 'B_Mask': 1}
    
    • 1
    • 2

    单非空字典,是否可以循环删除内容,NO!

    A = [1,2,3]
    B = [4,5,6]
    
    dic = {'A':A,'B':B}
    i =0
    
    for key,val in dic.items():
        print("dic: ", dic)
        del dic[key]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    报错:

    dic:  {'A': [1, 2, 3], 'B': [4, 5, 6]}
    Traceback (most recent call last):
      File "Test0818.py", line 10, in <module>
        for key,val in dic.items():
    RuntimeError: dictionary changed size during iteration
    
    • 1
    • 2
    • 3
    • 4
    • 5

    单非空字典,增加list()可循环删除内容

    A = [1,2,3]
    B = [4,5,6]
    
    dic = {'A':A,'B':B}
    i =0
    
    for key,val in list(dic.items()):
        print("dic1: ", dic)
        del dic[key]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    输出:

    dic1:  {'A': [1, 2, 3], 'B': [4, 5, 6]}
    dic1:  {'B': [4, 5, 6]}
    
    • 1
    • 2

    不遍历,直接增加字典内容

    A = [1,2,3]
    B = [4,5,6]
    
    dic = {'A':A,'B':B}
    print("dic: ",dic)
    dic['C']=1
    print("dic: ",dic)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    输出:

    dic:  {'A': [1, 2, 3], 'B': [4, 5, 6]}
    dic:  {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': 1}
    
    Process finished with exit code 0
    
    • 1
    • 2
    • 3
    • 4

    通过循环创建字典

    dicts = {}
    
    keys = [10, 12, 14, 16]
    values = ["A", "B", "C", "D"]
    
    for i in range(len(keys)):
        dicts[keys[i]] = values[i]
    print(dicts)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
  • 相关阅读:
    Plurality in Voxel——VoxEdit 比赛
    基于SpringBoot的防疫物资管理平台设计与实现
    JavaScript_Date对象_实例方法_set类
    40_内部类
    【从零开始学习 SystemVerilog】6.6、SystemVerilog 接口—— Clocking Blocks(下)
    适合玩游戏的蓝牙耳机有哪些?低延迟蓝牙耳机推荐
    LabVIEW应用开发——控件的使用(四)
    TCP/IP 详解(第 2 版) 笔记 / 3 链路层 / 3.5 无线局域网 - IEEE 802.11 (Wi-Fi) / 3.5.1 802.11 帧
    css-水滴登录页
    代码审计及示例
  • 原文地址:https://blog.csdn.net/OrdinaryMatthew/article/details/126436998