【问题标题】:Why does casting a Python dict to a tuple return a tuple of keys?为什么将 Python dict 转换为元组会返回一个键元组?
【发布时间】:2018-08-08 22:53:56
【问题描述】:

我遇到了一些让我很困惑的 Python 代码。

my_dict = {'a': 'b'}
a, = my_dict            # a = 'a'
a, b = my_dict          # ValueError: Too many values to unpack

基本上,我发现将字典转换为元组会返回字典键的元组。

my_dict = {'a': 'b', 'c': 'd'}
a = tuple(my_dict)      # a = ('a', 'c')

为什么 tuple(dict) 返回一个键元组?我可以理解它,但找不到任何文档或解释原因。谁能解释一下?

【问题讨论】:

  • 当你遍历字典时,默认情况下,你会遍历它的键。

标签: python python-2.7 types casting


【解决方案1】:

字典对象被清楚地记录在案here

迭代(d)

返回字典键的迭代器。

注意,这就是为什么当您使用listtuple可迭代 转换为列表或元组时,我不喜欢使用术语“cast”。而从元组docs

类元组([iterable]):

...

构造函数构建一个tuple,其项目相同并且在 与 iterable 的项目相同的顺序。 iterable 可以是一个序列, 支持迭代的容器或迭代器对象。如果 iterable 已经是一个元组,它原封不动地返回。例如,tuple('abc') 返回 ('a', 'b', 'c')tuple( [1, 2, 3] ) 返回(1, 2, 3)。如果没有给出参数,则构造函数创建 一个新的空元组,()

【讨论】:

    猜你喜欢
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 2021-05-19
    • 2022-01-05
    • 1970-01-01
    • 2017-06-27
    • 2017-07-04
    • 2018-05-28
    相关资源
    最近更新 更多