在python中为现有的键值对对象添加一个新的键值对

时间:2013-07-11 18:23:31

标签: python

Python初学者。我有一个带有键的字典,它的值是一个对象(字典),它也有一个键值对。我想为'child'对象添加一个键值对。

给出:

{"foo" : 
    {"bar" : "bars value"}
}

我想补充一下:

{"foo" : 
    {"bar" : "bar value", 
     "baz" : "baz value" 
    }
}

这似乎非常普遍,但我似乎无法找到一个好方法。

4 个答案:

答案 0 :(得分:6)

somedict = {"foo" : 
    {"bar" : "bars value"}
}

somedict['foo']['baz'] = 'baz value'

当Python遇到somedict['foo']['baz']时,它首先会查找裸名somedict的值。它发现它是dict。然后它评估somedict['foo']并发现它是另一个字典。然后,它会为此dict分配一个值为'baz'的新密钥`baz value'

答案 1 :(得分:3)

你可以做到

mydict["foo"]["baz"] = "baz value"

,如

>>> mydict = {"foo" : {"bar" : "bars value"}}
>>> mydict["foo"]["baz"] = "baz value"
>>> mydict
{'foo': {'baz': 'baz value', 'bar': 'bars value'}}

答案 2 :(得分:1)

这将在不知道dic内的键值对的情况下工作:

>>> dic = {"foo" : {"bar" : "bars value"}}
...     
>>> pairs = (("baz", "baz value"),)
for k,v in pairs:
    for k1 in dic:
        dic[k1][k]= v
>>> dic
{'foo': {'baz': 'baz value', 'bar': 'bars value'}}

另一个例子:

>>> dic = {"foo" : {"bar" : "bars value"},"bar" : {"bar" : "bars value"} }
>>> pairs = (("baz", "baz value"),)
for k,v in pairs:
    for k1 in dic:
        dic[k1][k]= v
...         
>>> dic
{'foo': {'baz': 'baz value', 'bar': 'bars value'},
 'bar': {'baz': 'baz value', 'bar': 'bars value'}}

答案 3 :(得分:0)

使用update()的替代方案:

def updateChild(d,pk,pair):     d [ “PK”]。更新((对,))

d是整个字典,pk是父键,pair是子键和更新数据的元组。如果您已经拥有该对,这很有用,因为您可能会在问题标题中找到它。