• 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
  • 相关阅读:
    如何使用ASO优化来提高应用的安装率
    iNFTnews | 一词解答区块链技术普及的制胜关键
    大型 APP 的性能优化思路
    windows文本绘制 TextOut、DrawText、CreateFont、SetTextColor、SetBkColor、SetBkMode
    Cloudflare KV 数据备份及迁移
    JavaEE——No.2 套接字编程(TCP)
    区块链应用:椭圆曲线数字签名算法ECDSA
    效率提升 100%,YRCloudFile 让自动驾驶安全更有保障
    小程序优化实践
    vagrant设置磁盘大小
  • 原文地址:https://blog.csdn.net/OrdinaryMatthew/article/details/126436998