• Python:dict


    一些关于dict的奇妙观察

    实验一

    首先,创建两个一模一样的字典:

    dict1 = {'a': 1}
    dict2 = {'a': 1}
    
    • 1
    • 2

    然后,进行各种各样的相等判断:

    print(dict1 == dict2)
    print(dict1.keys() == dict2.keys())
    print(dict1.values() == dict2.values())
    print(sorted(dict1.values()) == sorted(dict2.values()))
    
    • 1
    • 2
    • 3
    • 4

    得到令人震惊的结果:

    True
    True
    False
    True
    
    • 1
    • 2
    • 3
    • 4

    看看dict1.values()dict2.values()究竟是何方神圣:

    print(dict1.values())
    print(dict2.values())
    
    • 1
    • 2

    并无不同:

    dict_values([1])
    dict_values([1])
    
    • 1
    • 2

    再看sorted后:

    print(sorted(dict1.values()))
    print(sorted(dict2.values()))
    
    • 1
    • 2

    dict_values变为list了:

    [1]
    [1]
    
    • 1
    • 2

    实验二

    dict1 = {'a': 1, 'b': 2}
    dict2 = {'b': 2, 'a': 1}
    
    print(dict1 == dict2)
    print(dict1.keys() == dict2.keys())
    print(dict1.values() == dict2.values())
    print(sorted(dict1.values()) == sorted(dict2.values()))
    
    print(dict1.values())
    print(dict2.values())
    print(sorted(dict1.values()))
    print(sorted(dict2.values()))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    输出:

    True
    True
    False
    True
    dict_values([1, 2])
    dict_values([2, 1])
    [1, 2]
    [1, 2]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    实验三

    dict1 = {'a': 1, 'b': 2, 'c': 2}
    dict2 = {'b': 2, 'a': 1, 'c': 1}
    
    print(dict1 == dict2)
    print(dict1.keys() == dict2.keys())
    print(dict1.values() == dict2.values())
    print(sorted(dict1.values()) == sorted(dict2.values()))
    
    print(dict1.values())
    print(dict2.values())
    print(sorted(dict1.values()))
    print(sorted(dict2.values()))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    输出:

    False
    True
    False
    False
    dict_values([1, 2, 2])
    dict_values([2, 1, 1])
    [1, 2, 2]
    [1, 1, 2]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    结论

    1. 只要dict1和dict2的key在无序意义下是一致的,dict1.keys() == dict2.keys()的结果就为True(实验二)
    2. 即使dict1和dict2的value在有序意义下是一致的,dict1.values() == dict2.values()的结果也为False(实验一),因此比较两个dict的value必须要sorted
  • 相关阅读:
    科研项目一般流程介绍
    一个优秀的 Web3项目具备的特点
    XSS-labs靶场实战(三)——第7-8关
    Linux---awk
    微信的个人号接口
    7、Tomcat & Servlet
    Ubuntu20.0中安装Gradle
    3D生成式AI模型与工具
    GBase 8c V3.0.0数据类型——序列号生成函数
    零基础自学javase黑马课程第十二天综合练习复习
  • 原文地址:https://blog.csdn.net/z3w97/article/details/133681295