2015-12-18 65 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 –