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 |