检查嵌套字典中的键

时间:2019-11-24 17:15:42

标签: python python-2.7

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

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

如果输入键是GradeD,则输入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' : '10'}}, {'GradeB' : {'Patrick' : 'val23'}, {'Putty' : 'val40'}}, {'GradeC' : {'John' : 'val8'}}, {'GradeD' : {'Tim' : 'Val5'}, {'Kate' : 'val50'}}, {'GradeE' : {'kim' : 'val27'}}]

如果输入键为GradeA,请输入kim val10。然后应该如下所示:

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

很高兴听到一些建议。提前谢谢。

1 个答案:

答案 0 :(得分:1)

您的第一条语句中存在语法错误。

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