簡體   English   中英

在 python 中設置字典時會發生什么?

[英]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的迭代器返回它的鍵。 與其說setdict有用,不如說set關心它的論點是什么。

至於為什么dict迭代器返回dict的鍵,這是語言設計者做出的有點武斷的選擇,但請記住,考慮到迭代鍵、值或鍵值對的選擇,迭代密鑰可能是實用性和簡單性之間的最佳折衷。 (這三個都可以通過d.keys()d.values()d.items()顯式獲得;在某種意義上iter(d)d.keys()常見用例的一種便利。)

暫無
暫無

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

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