2012-09-07 35 views
0

我想創建一個包含多個鍵和值的字典。在這一點上,我不確定我是否正確地提出了我的問題。但這裏是什麼,我想創建一個例子:創建具有多個鍵和值的字典

patDct = { 
      'mkey1':{'key1':'val_a1', 'key2':'val_a2', 'key3':'val_a3'}, 
      'mkey2':{'key1':'val_b1', 'key2':'val_b2', 'key3':'val_b3'}, 
      .... 
      }   

我有兩本詞典,我爲「MKEY *」中提取信息,和「VAL *」從他們身上。 'key *'是字符串。

我有一段代碼來創建沒有'mkey *'的字典,但只打印出最後一組值。以下是我現在擁有的。 「storedct」和「datadct」是兩個給定的詞典。 這裏我想'mkey *'來獲取「item」的值。

patDct = dict()                                        
for item in storedct :                                       
    for pattern in datadct :                                      
     if pattern in item :                                      
      patDct['key1'] = datadct[pattern]["dpath"]                           
      patDct['key2'] = datadct[pattern]["mask"]                                                             
      patDct['key3'] = storedct[item] 

感謝您的任何建議。

+2

什麼你展示被稱爲嵌套的字典。另外,如果您顯示字典的內容,我們會更好地理解您的代碼。現在我們可以看到所需的輸出,但沒有輸入。 –

+0

如果你可以用key *,val *和mkey *來編寫storedct和datadct,那真的會有幫助! –

+0

storedct = {'val_a1':'val_a2','val_b1':'val_b2',....} datadct是嵌套字典與* mkey *作爲模式裏面... – iamauser

回答

1
patDct = dict()  
n=1                                       
for item in storedct : 
    patDct["mkey%s"%n] = {} 
    p = patDct["mkey%s"%n]                                        
    for pattern in datadct :                                      
     if pattern in item :                                      
      p['key1'] = datadct[pattern]["dpath"]                           
      p['key2'] = datadct[pattern]["mask"]                                                             
      p['key3'] = storedct[item] 
    n +=1 

print patDct 
+0

因爲我只需要字典匹配的模式,我修改你的代碼是爲了我的目的,是的,它確實有效。謝謝你的回答。 – iamauser

1

從我從你的代碼明白,我想這:

patDct = dict() 
i = 0 
for item in storedct : 
    for pattern in datadct : 
     if pattern in item : 
      i = i + 1 
      new_item = {} 
      new_item['key1'] = datadct[pattern]["dpath"] 
      new_item['key2'] = datadct[pattern]["mask"] 
      new_item['key3'] = storedct[item] 
      # I used a counter to generate the `mkey` values, 
      # not sure you want it that way 
      patDct['mkey{0}'.format(i)] = new_item 

不應該從你的需求遠......

+0

是的,這似乎與我的目的稍作修改。非常感謝。 – iamauser

相關問題