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
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值