【问题标题】:For a, b in c, d Python [duplicate]对于c,d Python中的a,b [重复]
【发布时间】:2017-04-12 22:59:19
【问题描述】:

我有一个键列表和一个值列表,我想填写一个字典,如下所示:

 for key, value in listKeys, listValues:
     dict[key] = value

但是,我收到以下错误:

builtins.ValueError: too many values to unpack (expected 2)

【问题讨论】:

    标签: python loops dictionary for-loop


    【解决方案1】:

    您希望 the zip function 从多个输入中的每一个中生成 tuples 值的生成器:

    mydict = {}
    for key, value in zip(listKeys, listValues):
         mydict[key] = value
    

    也就是说,您可以跳过编写自己的循环的繁琐工作,让dict 构造函数完成工作;它可以使用可迭代的键/值对来初始化自身,并完全避免 Python 级别的循环:

    mydict = dict(zip(listKeys, listValues))
    

    或者如果mydict 是现有的非空dict,则使用update 方法,它接受与构造函数相同的参数:

    mydict.update(zip(listKeys, listValues))
    

    旁注:我将您的变量重命名为 mydict,因为隐藏像 dict 这样的内置名称是一个糟糕的想法。

    【讨论】:

    • 谢谢,感谢您的快速回复
    • 如果您看到一个非常常见的问题,其中包含流行的规范副本,您可以投票或标记该问题以关闭该副本。
    【解决方案2】:

    使用zip 同时遍历两个列表:

    for key, value in zip(listKeys, listValues) :
        dict[key] = value
    

    【讨论】:

    • 谢谢,感谢您的快速回复
    • 如果您看到一个非常常见的问题,其中包含流行的规范副本,您可以投票或标记该问题以关闭该副本。
    • 为什么要投反对票?!我的声誉不足以做到这一点,而否决票无法提供此信息,一条评论就足够了。请取消投票。 @TigerhawkT3
    • 您可以将要关闭的问题标记为重复的with 15 reputation
    • 感谢您提供此信息,但我的观点是拒绝其他人的回答只是为了“惩罚”他们不知道此信息,这是不行的。我们都是这里的学习者。 @TigerhawkT3
    【解决方案3】:

    使用邮编:

    for key, value in zip(listKeys, listValues): dict[key] = value

    【讨论】:

    • 谢谢,感谢您的快速回复
    • 如果您看到一个非常常见的问题,其中包含流行的规范副本,您可以投票或标记该问题以关闭该副本。
    猜你喜欢
    • 2018-09-14
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 2022-11-23
    • 1970-01-01
    • 1970-01-01
    • 2012-01-27
    • 2020-07-15
    相关资源
    最近更新 更多