[英]What happens when you set a dictionary in python?
當我在字典上使用 set 時遇到這種行為時,我正在嘗試一些想法來解決一個不相關的問題:
a = {"a": 1}
b = {"b": 2}
c = {"a": 1}
set([a, b, c])
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-21-7c1da7b47bae> in <module>
----> 1 set([a, b, c])
TypeError: unhashable type: 'dict'
d = {"a": 1, "b": 2}
set(d)
Out[23]: {'a', 'b'}
set(a)
Out[24]: {'a'}
我有點理解為什么這組字典是不可散列的(它們是可變的),但整個事情對我來說沒有多大意義。 為什么set(a)
和set(d)
只返回鍵,這有什么用?
謝謝!
function set(x)
采用任何可迭代的x
並將所有迭代值放入一個集合中。
字典是可迭代的。 當您遍歷字典時,您將獲得鍵。 所以set(d)
會給你一個新的集合,其中包含 dict d
的所有鍵。
set
將任意迭代轉換為集合,這意味着為其參數獲取迭代器。 dict
的迭代器返回它的鍵。 與其說set
對dict
有用,不如說set
不關心它的論點是什么。
至於為什么dict
迭代器返回dict
的鍵,這是語言設計者做出的有點武斷的選擇,但請記住,考慮到迭代鍵、值或鍵值對的選擇,迭代密鑰可能是實用性和簡單性之間的最佳折衷。 (這三個都可以通過d.keys()
、 d.values()
和d.items()
顯式獲得;在某種意義上iter(d)
是d.keys()
常見用例的一種便利。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.