Python每日一练0008

发布时间:2019-06-29 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Python每日一练0008脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

问题

怎样在两个字典中寻寻找相同点(比如相同的键、相同的值等等)?

解决方案

直接对keys()或者ITems()使用集合操作,比如-(差)、|(并)、&(交)

考虑下面两个字典:

a = {
    'x': 1,
    'y': 2,
    'z': 3,
}
b = {
    'w': 10,
    'x': 11,
    'y': 2,
}

要找到相同的key,可以对keys&操作

>>> print(a.keys() & b.keys())
{'x', 'y'}

也可以使用这一特性来对字典过滤,例如去掉集合A中key为x和y两个元素

>>> print({key: a[key] for key in a.keys() - {'x', 'y'}})
{'z': 3}

values()不支持这样的集合操作,因为values()返回的结果中,可能会有重复元素,也就不能当作一个集合来看了

@H_777_115@讨论

dict.keys()dict.values()dict.items()返回的是视图对象,也就是说当字典改变后,视图对象也会改变

>>> d = {'a': 1, 'b': 2}
>>> v = d.keys()
>>> print(v)
dict_keys(['a', 'b'])
>>> d['c'] = 3
>>> print(v)
dict_keys(['a', 'b', 'c'])
>>> d['d'] = 4
>>> print(v)
dict_keys(['a', 'b', 'c', 'd'])

并且dict.keys()是set-like的,因为key的值是唯一的并且是可hash的,除此之外,当value的值也是可hash的时候,dict.items()也是set-like的

set-like对象可以像set对象一样执行集合间的操作

Python CookBook

关注

欢迎关注我的微信公众号python每日一练

Python每日一练0008

脚本宝典总结

以上是脚本宝典为你收集整理的Python每日一练0008全部内容,希望文章能够帮你解决Python每日一练0008所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。