6

Python初学者在这里。我有一个带有键的字典,它的值是一个对象(dict),它也有一个键值对。我想向“子”对象添加一个键值对。

给定:

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

我想补充:

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

这似乎非常普遍,但我似乎找不到一个好的方法来做到这一点。

4

4 回答 4

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

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

当 Python 遇到somedict['foo']['baz']它时,它首先查找裸 name 的值somedict。它发现它是一个dict. 然后它评估somedict['foo']并发现它是另一个字典。然后它为这个 dict 分配一个'baz'带有 value的新键`baz value'

于 2013-07-11T18:24:49.350 回答
4

你可以做

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

如在

>>> mydict = {"foo" : {"bar" : "bars value"}}
>>> mydict["foo"]["baz"] = "baz value"
>>> mydict
{'foo': {'baz': 'baz value', 'bar': 'bars value'}}
于 2013-07-11T18:24:57.543 回答
2

这将在不知道里面的键值对的情况下工作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'}}
于 2013-07-11T18:26:31.347 回答
0

另一种使用update()

def updateChild(d, pk, pair): d["pk"].update((pair,))

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

于 2013-07-11T18:40:38.923 回答