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

时间:2018-02-28 23:00:15

标签: python python-2.7 types casting

我遇到了一些令我非常困惑的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 个答案:

答案 0 :(得分:3)

字典对象清楚记录here

  

ITER(d)

     

在字典的键上返回一个迭代器。

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

  

class tuple([iterable]):

     

...

     

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

相关问题