Python 检查嵌套字典中的键

Python 检查嵌套字典中的键,python,python-2.7,Python,Python 2.7,我正在尝试检查嵌套字典中的键,并相应地添加键/值。 比如说,我有以下几点 mydict = [{'GradeA' : {'kim' : '10'}}, {'GradeB' : {'Patrick' : 'val23'}, {'Putty' : 'val40'}}, {'GradeC' : {'John' : 'val8'}}, {'GradeD' : {'Tim' : 'Val5'}}] 如果输入键分级,则为50。然后,它应添加到该键,如下所示: mydict= [{'Grade

我正在尝试检查嵌套字典中的键,并相应地添加键/值。 比如说,我有以下几点

mydict = [{'GradeA' : {'kim' : '10'}}, {'GradeB' : {'Patrick' : 'val23'}, {'Putty' : 'val40'}}, {'GradeC' : {'John' : 'val8'}}, {'GradeD' : {'Tim' : 'Val5'}}]
如果输入键分级,则为50。然后,它应添加到该键,如下所示:

       mydict= [{'GradeA' : {'kim' : '10'}}, {'GradeB' : {'Patrick' : 'val23'}, {'Putty' : 'val40'}}, {'GradeC' : {'John' : 'val8'}}, {'GradeD' : {'Tim' : 'Val5'}, {'Kate' : 'val50'}}]
       mydict= [{'GradeA' : {'kim' : '10'}}, {'GradeB' : {'Patrick' : 'val23'}, {'Putty' : 'val40'}}, {'GradeC' : {'John' : 'val8'}}, {'GradeD' : {'Tim' : 'Val5'}, {'Kate' : 'val50'}}, {'GradeE' : {'kim' : 'val27'}}]
         mydict= [{'GradeA' : {'kim' : 'val10'}}, {'GradeB' : {'Patrick' : 'val23'}, {'Putty' : 'val40'}}, {'GradeC' : {'John' : 'val8'}}, {'GradeD' : {'Tim' : 'Val5'}, {'Kate' : 'val50'}}, {'GradeE' : {'kim' : 'val27'}}] 
如果输入键为Grade,则为Kim val27。那么它应该如下所示:

       mydict= [{'GradeA' : {'kim' : '10'}}, {'GradeB' : {'Patrick' : 'val23'}, {'Putty' : 'val40'}}, {'GradeC' : {'John' : 'val8'}}, {'GradeD' : {'Tim' : 'Val5'}, {'Kate' : 'val50'}}]
       mydict= [{'GradeA' : {'kim' : '10'}}, {'GradeB' : {'Patrick' : 'val23'}, {'Putty' : 'val40'}}, {'GradeC' : {'John' : 'val8'}}, {'GradeD' : {'Tim' : 'Val5'}, {'Kate' : 'val50'}}, {'GradeE' : {'kim' : 'val27'}}]
         mydict= [{'GradeA' : {'kim' : 'val10'}}, {'GradeB' : {'Patrick' : 'val23'}, {'Putty' : 'val40'}}, {'GradeC' : {'John' : 'val8'}}, {'GradeD' : {'Tim' : 'Val5'}, {'Kate' : 'val50'}}, {'GradeE' : {'kim' : 'val27'}}] 
如果输入键为Grade A,则为kim val10。那么它应该如下所示:

       mydict= [{'GradeA' : {'kim' : '10'}}, {'GradeB' : {'Patrick' : 'val23'}, {'Putty' : 'val40'}}, {'GradeC' : {'John' : 'val8'}}, {'GradeD' : {'Tim' : 'Val5'}, {'Kate' : 'val50'}}]
       mydict= [{'GradeA' : {'kim' : '10'}}, {'GradeB' : {'Patrick' : 'val23'}, {'Putty' : 'val40'}}, {'GradeC' : {'John' : 'val8'}}, {'GradeD' : {'Tim' : 'Val5'}, {'Kate' : 'val50'}}, {'GradeE' : {'kim' : 'val27'}}]
         mydict= [{'GradeA' : {'kim' : 'val10'}}, {'GradeB' : {'Patrick' : 'val23'}, {'Putty' : 'val40'}}, {'GradeC' : {'John' : 'val8'}}, {'GradeD' : {'Tim' : 'Val5'}, {'Kate' : 'val50'}}, {'GradeE' : {'kim' : 'val27'}}] 

很高兴听到一些建议。非常感谢。

您的第一个语句中有语法错误

mydict = [{'GradeA' : {'Kim' : '10'}}, {'GradeB' : {'Patrick' : 'val23'}, {'Putty' : 'val40'}}, {'GradeC' : {'John' : 'val8'}}, {'GradeD' : {'Tim' : 'Val5'}}]
我想应该读一下

mydict = [{'GradeA' : {'Kim' : '10'}}, {'GradeB' : {'Patrick' : 'val23', 'Putty' : 'val40'}}, {'GradeC' : {'John' : 'val8'}}, {'GradeD' : {'Tim' : 'Val5'}}]
如果“kim”被认为是一个拼写错误,您还没有解决它吗?在我的回答中,我假设这是一个错误,如果这不是一个错误,则需要转换为小写,并且需要进行某种比较

下面的代码首先检查特定等级是否存在,如果存在,则将条目添加到包含的词典中。如果没有,则会向列表中添加新的等级和条目

my_list = [{'GradeA' : {'Kim' : '10'}}, {'GradeB' : {'Patrick' : 'val23', 'Putty' : 'val40'}}, {'GradeC' : {'John' : 'val8'}}, {'GradeD' : {'Tim' : 'Val5'}}]

def manageList(grade, name, value):
    search_list = False
    for item in my_list:
        if list(item.keys())[0] == grade:
            item[grade][name] = value
            search_list = True
        else:
            pass
    if search_list: 
        pass        
    else:
        my_list.append({grade: {name: value}})  

manageList('GradeD', 'Kate', 'val50')
print(my_list)
manageList('GradeE', 'Kim', 'val27')
print(my_list)
manageList('GradeA', 'Kim', 'val10')
print(my_list)
输出

[{'GradeA': {'Kim': '10'}}, {'GradeB': {'Patrick': 'val23', 'Putty': 'val40'}}, {'GradeC': {'John': 'val8'}}, {'GradeD': {'Tim': 'Val5', 'Kate': 'val50'}}]
[{'GradeA': {'Kim': '10'}}, {'GradeB': {'Patrick': 'val23', 'Putty': 'val40'}}, {'GradeC': {'John': 'val8'}}, {'GradeD': {'Tim': 'Val5', 'Kate': 'val50'}}, {'GradeE': {'Kim': 'val27'}}]
[{'GradeA': {'Kim': 'val10'}}, {'GradeB': {'Patrick': 'val23', 'Putty': 'val40'}}, {'GradeC': {'John': 'val8'}}, {'GradeD': {'Tim': 'Val5', 'Kate': 'val50'}}, {'GradeE': {'Kim': 'val27'}}]

我想你在这里错误地写了两次B级-
mydict=[{'GradeA':{'kim':'10'},{'GradeB':{'Patrick':'val23'},{'GradeB':{'GradeB':{'Putty':'val40'},{'GradeC':{'John':'val8'},{'GradeD':{'Tim':'Val5'},{/code>,因为它与你的下一行有冲突。我想你的意思是把“kim”中的“k”大写。这将改变解决方案。澄清这个问题,我将取消我的否决票并回答它。最好的luck@Jake戴森-谢谢你的建议。我已经编辑了我的问题。