Python:dict

一些关于dict的奇妙观察

实验一

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

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

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

print(dict1 == dict2)
print(dict1.keys() == dict2.keys())
print(dict1.values() == dict2.values())
print(sorted(dict1.values()) == sorted(dict2.values()))

得到令人震惊的结果:

True
True
False
True

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

print(dict1.values())
print(dict2.values())

并无不同:

dict_values([1])
dict_values([1])

再看sorted后:

print(sorted(dict1.values()))
print(sorted(dict2.values()))

dict_values变为list了:

[1]
[1]

实验二

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()))

输出:

True
True
False
True
dict_values([1, 2])
dict_values([2, 1])
[1, 2]
[1, 2]

实验三

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()))

输出:

False
True
False
False
dict_values([1, 2, 2])
dict_values([2, 1, 1])
[1, 2, 2]
[1, 1, 2]

结论

  1. 只要dict1和dict2的key在无序意义下是一致的,dict1.keys() == dict2.keys()的结果就为True(实验二)
  2. 即使dict1和dict2的value在有序意义下是一致的,dict1.values() == dict2.values()的结果也为False(实验一),因此比较两个dict的value必须要sorted

你可能感兴趣的:(python,开发语言)