簡體   English   中英

集合和視圖之間的差異

[英]Difference between a set and a view

我學習Python已有大約一個月的時間,並且遇到了有關視圖和集合的討論。 我正在使用的《學習Python》這本書說,視圖是可迭代的,並且其對象的順序與字典相同,但是視圖也支持set操作。

在我看來,他們可以完成所有設置。 它看起來像鴨子,嘎嘎像鴨子,並且可以像鴨子一樣進行設置操作。 為什么集和視圖然后將對象的類型分開?

另外,我搜索了“設置視圖Python差異”以查找重復的問題,但找不到任何問題。

只有dict.keys()字典視圖始終是一個集合(它的行為類似於集合,但是具有字典的實時視圖)。

dict.values()視圖永遠不會是一個集合,因為不能保證這些值是唯一的,也不能保證這些值是可哈希的(對集合的要求)。 創建值字典視圖時,您還必須預先計算所有哈希,這可能是非常昂貴的操作。 在這種情況下,您始終可以使用顯式set(dictionary.values())

如果所有值都是可dict.items() ,則dict.items()視圖( 主要是一個集合); 這是因為當您從視圖創建交集,並集或其他新集合時, 必須產生一個新的set對象,這要求整個鍵值對都是可哈希的; 您將無法再保證在這種情況下僅鍵是唯一的。

另請參閱字典視圖對象文檔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM