使用字典的更新功能

时间:2017-12-03 07:19:44

标签: python class dictionary

我对字典

的内置更新功能有疑问
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'}}

我熟悉这样一个事实:如果更新已经存在,则更新将替换附加到它的任何键及其值。但是,我想知道如何在不删除原始密钥1的情况下附加addthis,然后使用changethis更新替换1的原始密钥。任何帮助都将不胜感激!

2 个答案:

答案 0 :(得分:1)

如果我理解正确,那么为了获得一个字符值" 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'}}

答案 1 :(得分:0)

从评论中可以看出您想要一个列表。要做到这一点,地图的每个值都必须是一个列表,而不是一个字典。

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'}}