代码之家  ›  专栏  ›  技术社区  ›  Davis Allen

为什么将Python dict转换为元组会返回一个键元组?

  •  1
  • Davis Allen  · 技术社区  · 7 年前

    我遇到了一些让我非常困惑的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')
    

    为什么元组(dict)返回键的元组?我能理解,但找不到任何文档或解释。有人能解释一下吗?

    1 回复  |  直到 7 年前
        1
  •  3
  •   juanpa.arrivillaga    7 年前

    字典对象有明确的文档记录 here :

    iter(d)

    返回字典键的迭代器。

    注意,这就是为什么我不喜欢在使用 list tuple 要转换 一个可移植的 进入列表或元组。从元组 docs :

    类元组([iterable]):

    ...

    构造函数构建 元组 其项目相同 订单与相同 可迭代的 s项目。 可迭代的 可以是序列, 支持迭代的容器或迭代器对象。如果 可迭代的 已是元组,返回时未更改。例如 tuple('abc') 退货 ('a', 'b', 'c') tuple( [1, 2, 3] ) 退货 (1, 2, 3) . 如果没有给出参数,构造函数将创建 一个新的空元组, () .