2015-12-18 66 views
0
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

你能解释一下预期的结果吗? – number5

+0

我必须修改原始列表(level_input),方法是将值字段中的每个字典键与列表和字典(输入)中各个键的字典的每个值进行映射。如果匹配(例如:sum = sum,diff ='diff'然后用词典键更新列表键,如[ {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'}} –

+0

我必须修改原始列表(level_input),方法是将值字段中的每个字典键与字典(输入)中的各个键的字典中的每个值(req_dict)。如果存在匹配(例如,re_dict中的level_input = sum中的sum,req_input中的leve_input = diff中的diff),则更新列表键与字典键如[ {3:{'f1':'数学','f2':'无','f3':'是','f4':'无','f5':'无'}}, {2 :{'f1':'NONE','f2':'Pass','f3':'NONE','f4':'unknown'}}, {1:{'f1':'Pass' f2':'NONE','f3':'3'}} –

回答

1

你的代码没有分手req_dict,因此最后的print语句只是打印出一个词典这是req_dict的列表。尝试用以下内容替换上一条打印语句:

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

谢谢..我会尝试dis –