映射字典和字典列表,最后在映射后更新字典列表

时间:2015-12-18 06:07:32

标签: python dictionary

req_dict =  {
1: {'f1': 'name', 'f2': 'age', 'f3': 'class'}, 
2: {'f1': 'company', 'f2': 'salary', 'f3': 'age', 'f4': 'class'}, 
3: {'f1': 'Feature', 'f2': 'sum', 'f3': 'diff', 'f4': 'multiply', 'f5': 'div'}
}

level_input =  [
{3: {'sum': 'NONE', 'diff': 'yes', 'multiply': 'NONE', 'div': 'NONE', 'FEATURE': 'Maths'}}, 
{2: {'COMPANY': 'NONE', 'SALARY': 'Pass', 'AGE': 'NONE', 'CLASS': 'unknown'}},
{1: {'NAME': 'Pass', 'AGE': 'NONE', 'CLASS': '3'}}
]

我需要输出

updated_level_input = [
{3: {'f1': 'Maths', 'f2': 'none', 'f3': 'yes', 'f4': 'NONE', 'f5': 'NONE'}}, 
{2: {'f1': 'NONE', 'f2': 'Pass', 'f3': 'NONE', 'f4': 'unknown'}}, 
{1: {'f1': 'Pass', 'f2': 'NONE', 'f3': '3'}}
]

我试过下面的代码

level_dict = {}
    [level_dict.update(key) for key in levels_input]

    for key in req_dict:
        #print key
        for dict_key in req_dict[key]:
            print dict_key          
            searchKey = req_dict[key][dict_key]
            print searchKey.upper()         
            if searchKey.upper() in level_dict[key].keys():
                #print level_dict[key].keys()
                req_dict[key][dict_key] = req_dict[key][searchKey.upper()]                  
            else:
                req_dict[key][dict_key] = level_dict[key][searchKey]
print [req_dict]

但我得到的输出为

updated_level_input=[
{3: {'f1': 'Maths', 'f2': 'none', 'f3': 'yes', 'f4': 'NONE', 'f5': 'NONE'}, 
2: {'f1': 'NONE', 'f2': 'Pass', 'f3': 'NONE', 'f4': 'unknown'}, 
1: {'f1': 'Pass', 'f2': 'NONE', 'f3': '3'}}
]

基本上我尝试修改req_dict输入,而不是correct.i应该修改level_input列表

1 个答案:

答案 0 :(得分:1)

您的代码没有拆分req_dict,因此最后一个print语句只打印出一个字典列表,即req_dict。尝试使用以下内容替换最后一个print语句:

print [{key: value} for key, value in req_dict.iteritems()]