开发者社区> 问答> 正文

使用for循环从元组创建字典

我有以下Tupletup,并想将其转换为字典。我发现似乎有效的代码。但是,当我尝试自己的for循环时,会出现错误。有人可以向我解释为什么dict(y,x)在第一张印刷品中被允许,而另一张却给出例外吗?

tup = ((2,'x'),(3,'a'))

#CORRECT CODE
print(dict((y, x) for x, y in tup))                 #output: {'x':2, 'a':3}

#my own for loop, that throws the type error
for x, y in tup:
    print(dict(y,x))                                #output: TypeError dict expected at most 
                                                    #        1 argument, got 2

这两个循环之间的区别在哪里?

问题来源:stackoverflow

展开
收起
is大龙 2020-03-24 23:53:15 849 0
1 条回答
写回答
取消 提交回答
  • 正确的代码等效于:

    output = {}
    tup = ((2,'x'),(3,'a'))
    
    for x, y in tup:
        output[y] = x
    

    这也等效于:

    tup = ((2,'x'),(3,'a'))
    output = {y:x for (x,y) in tup}
    

    它将元组的每个元素的键值对添加到新字典中。

    回答来源:stackoverflow

    2020-03-24 23:53:23
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载