2
Dictionary views“是类似集合的对象”,因此可用于比较字典内容与其他对象。具体而言,比较列表与词典
- 键的视图:设置状
- 值的视图:未设置状
- 项目的视图:集一样,如果(键,值)对是独特且可排序
键盘视图的类似于集合的特性允许按位比较。在Python 3中,我们可以使用&
运算符找到交点。
hex_ids = {'#b0a7aa': '9976', '#595f5b': '19367', '#9a8f6a': '24095'}
hex_ids.keys()
# dict_keys(['#595f5b', '#9a8f6a', '#b0a7aa'])
{'#c7ccc0', '#9a8f6a', '#8a8e3e'} & hex_ids.keys()
# {'#9a8f6a'}
奇怪的是,进行比较的list
和密钥视图也是可能的:
['#c7ccc0', '#9a8f6a', '#8a8e3e'] & hex_ids.keys()
# {'#9a8f6a'}
list
而和set
对象通常不能这种方式进行比较。
['#c7ccc0', '#9a8f6a', '#8a8e3e'] & set(['#595f5b', '#9a8f6a', '#b0a7aa'])
# TypeError: unsupported operand type(s) for &: 'list' and 'set'
['#c7ccc0', '#9a8f6a', '#8a8e3e'] & {['#595f5b', '#9a8f6a', '#b0a7aa']}
# TypeError: unhashable type: 'list'
被设置样
除此之外,为什么关键的观点进行比较,使用按位运算符列表?
测试上:| Python的3.5.2 |的Python 3.4.4 | Python的2.7.12(使用viewkeys()
)| IPython的5.0.0 |