在python中从冻结集访问项

在python中从冻结集访问项,python,frozenset,Python,Frozenset,我有一个frozenset,它的形式是x=frozenset({“a”:1,“b”:2})。我想不出一种方法来访问dict中的条目。有没有一种方法可以解冻冻结集?下面给出的是我得到的错误 In [1]: x = frozenset({"a":1,"b":2}) In [2]: x Out[2]: frozenset({'a', 'b'}) In [3]: x["a"] --------------------------------------------------------------

我有一个frozenset,它的形式是
x=frozenset({“a”:1,“b”:2})
。我想不出一种方法来访问dict中的条目。有没有一种方法可以解冻冻结集?下面给出的是我得到的错误

In [1]: x = frozenset({"a":1,"b":2})

In [2]: x
Out[2]: frozenset({'a', 'b'})

In [3]: x["a"]
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-3-c47cedd3f38d> in <module>()
----> 1 x["a"]

TypeError: 'frozenset' object has no attribute '__getitem__'
[1]中的
:x=frozenset({“a”:1,“b”:2})
In[2]:x
Out[2]:冻结集({'a','b'})
在[3]中:x[“a”]
---------------------------------------------------------------------------
TypeError回溯(最近一次调用上次)
在()
---->1 x[“a”]
TypeError:“frozenset”对象没有属性“\uuuu getitem\uuuu”

非常感谢您的帮助。

frozenset构造函数需要一个iterable!如注释中所述,当您迭代一个
dict
时,您只迭代它的键,因此值丢失

x = frozenset({"a": 1,"b": 2})
# frozenset(['a', 'b'])
您可以从
dict
的项目中创建它,不过:

x = frozenset({"a": 1, "b": 2}.items())
# frozenset([('a', 1), ('b', 2)])
现在,您只需将其转换回一个
dict

d = dict(x)
# {'a': 1, 'b': 2}

Frozenset是一个集合而不是dict。
Frozenset
构造函数采用iterable,就像
set
构造函数一样。当您迭代一个
dict
时,您迭代它的键。不过,我不知道你为什么期望一个
x['a']
在一个集合上工作。这是一种字典行为。有没有办法“解冻”它……并访问其中的dict?@lordlabakdas其中没有dict!问题不在于冻结,而在于设置。正如Ashwini所说,集合不是dict。使用标准的
set()
也会遇到同样的问题。