如何在python中为dictionary的值添加新值



我想向字典中添加一个值,如下所示:

dic = {'key1': {1: 1},
'key2': {2: 5, 1: 1},
'key3': {2: 2, 1: 2},
}

想要为";键1"=>{3:4,1:5}

预期输出:

dic = {'key1': {1: 1, 3:4, 1:5},
'key2': {2: 5, 1: 1},
'key3': {2: 2, 1: 2},
}

我试过了,但它没有给我所需的输出。


dict[key1].append(value)

你能帮忙吗?提前感谢!!

在Python 3.5及更高版本中,我们可以使用将一个字典扩展为另一个字典

a = {4: 5}
b = {**a}

如果我们用两个字典来做这件事,我们会得到它们的合并,但第二个字典中的值会覆盖第一个字典中相同键的值。

a = {4: 5}
b = {1: 2, 4: 7}
c = {**a, **b}

c现在将是{4: 7, 1: 2}

所以你可以写:

dict[key1] = {**dict[key1], **{3: 4, 1: 5}}

您要查找的函数是dict.update()。然而,正如在评论中指出的那样,重复的密钥将被无声地覆盖。

例如

dic["key1"].update({3: 4, 1: 5})

编辑:

关于重复键的主题,这个SO问题提供了多种创建类似行为的方法:在Python 中制作一个具有重复键的字典

append()是内置list类型上的一个方法。由于与key1关联的值是内置的dict类型,因此您将无法使用append()来实现这一点。还有一个问题与您的预期输出有关:

{
1: 1,
3: 4,
1: 5,
}

在这本字典中,关键字1有两个值。在python字典中,只能有一个键。如果你想为一个特定的键有多个值,有几种方法可以处理这个问题(我建议你阅读哈希表:冲突解决方案(。

对于本例,假设您尝试使用append()方法,我将假设您希望将存储的值更新为包含[1, 5]的列表。在这种情况下,解决此问题的一种方法是使用以下代码。

dic = {
'key1': {1: 1},
'key2': {2: 5, 1: 1},
'key3': {2: 2, 1: 2},
}
key1_new_dict = {
1: [5],
3: [4],
}
for key, value in dic['key1'].items():
if key in key1_new_dict:
key1_new_dict[key].append(value)
else:
key1_new_dict[key] = [value]

最新更新