为什么python dict对象解开元组的单独元素,但如果这是一个列表对象,它会将其保存在容器中?



当我想访问dicttuple的单个元素时,我遇到了一个奇怪的错误。

以下是以下dict对象:

>>> x = {"palermo":{"country":"ARG",
... "utc":-3,
... "apply_time_change":(False), #other dicts are (True , "Region of the world")
... "hemisphere":"S"
... }}
>>> x['palermo']['apply_time_change'][0]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'bool' object is not subscriptable

多么令人惊讶,但是当我检查对象时:

>>> x['palermo']
{'country': 'ARG', 'utc': -3, 'apply_time_change': False, 'hemisphere': 'S'}

tuple消失了。它打开了包装。我想知道这是否是python 3中的新功能,可以在dict中解开可迭代对象的单独元素,但事实并非如此,因为有了list,它将单独的元素保留在其中。为什么?它的目标是什么?因为对我来说,它只会产生一个错误。

Python 3.7.4 under Ubuntu 18.04.3

为了创建一个 1 元素元组,你需要使用(False,)

最新更新