使用字典的更新功能

2024-06-17 17:07:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个关于字典的内置更新功能的问题

mydict = {1: {45:'ades'}, 2: {68:'gdes'}}
addthis = {1: {44:'paes'}}
changethis = {1: {45 : 'qwes'}
mydict.update(new)
mydict.update(changethis)
>>>mydict
{1: {45: 'qwes'}, {44: 'paes}, 2:{68: 'gdes'}}

我很熟悉这样一个事实,即update会替换任何键及其附加值(如果它已经存在的话)。但是,我想知道如何附加addthis而不删除1的原始键,然后用changethis更新来替换1的原始键。任何帮助都将不胜感激!你知道吗


Tags: 功能new字典update内置mydict事实addthis
2条回答

如果我没听错的话,那么要得到一个值为键“1”的字典,您需要的也是一个字典:

test_dict = {1: {45:"t"}, 2:{44:"tt"}}
new_value = {1: {44: "pae"}}
update_value = {1:{44:"tt"} }


def add_to_dict(dict, new_value):
   for key, value in new_value.items():
       dict[key].update(value)
# print(new_value.keys())

def update_dict(dict,new_value):
    dict.update(new_value)


if _name_ == '_main_':

   add_to_dict(test_dict,new_value)
   print(test_dict)
   update_dict(test_dict,update_value)
   print(test_dict)

它将打印:

# after you add a value to the dictionary inside the dictionary
{1: {44: 'pae', 45: 't'}, 2: {44: 'tt'}}
# after you update the value
{1: {44: 'tt'}, 2: {44: 'tt'}}

从评论中可以看到您想要一个列表。为此,地图的每个值都需要是一个列表,而不是一个字典。

mydict = {1: [{45:'ades'}], 2: [{68:'gdes'}]}

然后,当您向mydict添加内容时,需要索引到字典并更新:

addthis = {44:'paes'}
mydict[1].append(addthis)

>>>mydict
{1: [{45: 'ades'}, {44: 'paes'}], 2: [{68: 'gdes'}]}

要更改mydict中的内容,您需要迭代列表中的项目并相应地更新:

for el in mydict[1]:
    if 45 in el.keys():
        el[45] = 'qwes'
        break

这将导致:

>>>mydict
{1: [{45: 'qwes'}, {44: 'paes'}], 2: [{68: 'gdes'}]}


在进一步说明之后,您似乎想要一本词典:

mydict = {1: {45: 'ades'}, 2: {68: 'gdes'}}

要将元素添加到词典中的1,请执行以下操作:

mydict[1][44] = 'paes'
>>>mydict
{1: [{44: 'paes', 45: 'ades'}], 2: [{68: 'gdes'}]}

您可以使用以下方法访问44处的值:

mydict[1][44]

要修改45处的值:

mydict[1][45] = 'qwes'
>>>mydict
{1: {44: 'paes', 45: 'qwes'}, 2: {68: 'gdes'}}

相关问题 更多 >