使用词典的更新功能

使用词典的更新功能

问题描述:

我有一个关于内置的更新功能字典使用词典的更新功能

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.任何帮助将不胜感激!

+1

在Python字典中键必须是唯一的! – Ahmad

+0

你想要的关键1,你将访问2个不同的值?或者您将使用1访问不同的字典? – Green

+0

嗨@Green,我想要那个钥匙1将访问两个不同的值,这是字典 – Luke

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

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

您可以访问处的值使用:

mydict[1][44] 

要在45修改值:

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

嗯......谢谢你的帮助。有没有办法以某种方式链接列表中的元素值?这是因为如果我需要将一堆元素添加到我的键1的值列表中,我该如何知道哪一个元素是我需要的元素?例如,如果我需要将100个项目追加到列表中,我需要一个简单的方法来说出“45”,然后它为关键字45提取值。 – Luke

+0

另一种方法是创建一个字典字典(而不是词典列表词典)。那看起来就像'{1:{45:'qwes',44:'paes'},2:{68:'gdes'}}'并且可以像'mydict [1] [45] ==' qwes''和'mydict [1] [44] =='paes''。 –

+0

是的!这是我需要的!然而,我坚持如何将一个键的值和值的值附加到字典中,而不用清除我必须开始并替换它的任何内容。 – Luke

,如果我理解正确的你,这你为了需要具有价值的关键“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'}} 
+0

哦!这几乎是我正在寻找的!但是,如果您在更新字典后不能删除{1:{45:'t'}},那就完美了! – Luke

+0

那么只需使用第一个功能?听起来像这是你想实现的: {1:{44:'pae',45:'t'},2:{44:'tt'}} – Green

+0

不,我非常感谢你帮助男人。 – Luke