【问题标题】:How to assign multiple values to multiple keys with a single command如何使用单个命令为多个键分配多个值
【发布时间】:2014-01-29 20:28:30
【问题描述】:

我有像这样的字典:

Info = {
  "City_Name" : {
    "Population" : None,
    "Population_Density" : None
    }
}

我想为“Population”和“Population_Density”键分配值。我实际上可以使用以下命令来做到这一点:

Info["City_Name"]["Population"] = 20000 
Info["City_Name"]["Population_Density"] = 200 

但是,我想用一个命令来做到这一点,比如:

Info["City_Name"]["Population","Population_Density"] = 20000 , 200

但这不起作用,上面的命令会生成一个新密钥... (事实上​​,一个函数会返回这些值,因此,我需要用一个命令来完成)

编辑:

我需要提一下;不使用:

Info["City_Name"]["Population"],Info["City_Name"]["Population_Density"] = 20000, 200

我的字典的键名太长了,很难听懂;他们占用了很多空间。我还需要将三个值分配给三个键。因此,我想知道是否有任何方法可以只对零件进行一次修改,这彼此不同(例如,“Population”和“Population_Density”)。

【问题讨论】:

  • 试试Info["City_Name"]["Population"],Info["City_Name"]["Population_Density"]=20000,200

标签: python dictionary assign multiple-value


【解决方案1】:

完全做到您所要求的唯一方法是:

Info["City_Name"]["Population"], Info["City_Name"]["Population_Density"] = 20000, 200

否则它需要Info["City_Name"],并创建一个新键("Population", "Population_Density")(一个元组),并为其分配另一个元组(20000, 200)

或者你可以分两行来做:

d = Info["City_Name"]
d["Population"], d["Population_Density"] = 20000, 200

【讨论】:

  • 确实如此,非常感谢。但是,我的字典的键名太长了,很难理解;它需要很多空间。 (我实际上为三个键分配了三个值)。因此,我想知道是否有任何方法可以修改彼此不同的部分。在我们的案例中; “人口”和“人口密度”。
  • 我尝试了不同的括号组合、花括号等,但是没有帮助......
  • 必须为Info["City_Name"] 存储一个中间变量,然后在后续行中使用它
  • 如果我没有得到任何解决方案,我可以做你的建议。我试图实现它,但我做不到。我怎样才能做到这一点;我们如何存储这样一个字符串的中间变量?
【解决方案2】:

试试这个:

Info["City_Name"].update({"Population": 20000, "Population_Density": 200})

【讨论】:

  • 我从函数中获取数值,因此,我无法像您建议的那样将值分配给键名。 (对于这样的用途; ,我必须将我的函数返回的值分配给中间变量。然后,我必须按照您建议的方式分配它们。但是,这不是我想要的方式......但是,无论如何,非常感谢您的回复!)
  • 您的函数是否返回值列表,例如[20000, 200]?
  • 不,它实际上返回数组;我的函数是这样的:def myfunction(): ... return array1, array2, array3 所以,我有一个数组而不是 20000 和另一个值数组而不是 200... 但是抛开数组结构,我什至不知道如何实现它,即使我的函数有返回数值。
  • Info["City_Name"].update(dict(zip(["Population", "Population_Density"], myfunction()))) 呢?
  • 就是这样!我已将您的解决方案与 @mhlester 的解决方案相结合;所以; d= Info["City_Name"] 然后:d.update(dict(zip(["Population", "Population_Density"], myfunction()))) 。现在,这正是我喜欢的。非常感谢!
猜你喜欢
  • 1970-01-01
  • 2011-03-04
  • 2020-01-11
  • 2020-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-20
  • 1970-01-01
相关资源
最近更新 更多