通过将其与现有列表进行比较来更新嵌套字典值

时间:2019-06-11 01:17:58

标签: python

如何通过将嵌套字典的键值与现有列表进行比较来更改嵌套字典的值。

例如:我的常用名单名称:

common=['abc','def','xyz','etc']
mydict={'abc':{'a':10,'b':20,'c':10}, 'rat':{'r':10,'a':20,'t':10} , 'etc':{'e':10,'t':20,'c':50}}

现在,我想将'b'的值更改为50,因为它存在于mydict键值中 与我想将't'的值更改为10相同 我不希望对“ rat”进行任何更改,因为它在通用列表中不存在。

common=['abc','def','xyz','etc']

mydict={'abc':{'a':10,'b':20,'c':10}, 'rat':{'r':10,'a':20,'t':10} , 'etc':{'e':10,'t':20,'c':50}}

输入:

common=['abc','def','xyz','etc']

mydict={'abc':{'a':10,'b':20,'c':10}, 'rat':{'r':10,'a':20,'t':10} , 'etc':{'e':10,'t':20,'c':50}}

预期输出:

mynewdict={'abc':{'a':10,'b':'50,'c':10}, 'rat':{'r':10,'a':20,'t':10} , 'etc':{'e':10,'t':10,'c':50}}

2 个答案:

答案 0 :(得分:0)

您可以对嵌套字典使用索引,并比较其键的值。

common=['abc','def','xyz','etc']
mydict={'abc':{'a':10,'b':20,'c':10}, 'rat':{'r':10,'a':20,'t':10} , 'etc':{'e':10,'t':20,'c':50}}

for items in mydict:
    if items in common:
        inneritem= mydict[items]
        if 'b' in inneritem:
            inneritem['b']=50
        if 't' in inneritem:
            inneritem['t']=10

print(mydict)

答案 1 :(得分:0)

您可以一次只进行一次更新就可以做到这一点。除非您不介意将“ t”键添加到没有它的子词典中,否则多次更新将使该方法非常麻烦。

newdict={k:{**d,'t':10} if k in common and 't' in d else d for k,d in mydict.items()}