0

複数のキーと値を持つ辞書を作成したいと思います。この時点で、質問を正しく行っているかどうかわかりません。しかし、ここに私が作成したいものの例があります:

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

私は 2 つの辞書を持っており、それらから「mkey*」と「val*」の情報を取得しています。「key*」は文字列です。

「mkey*」なしで辞書を作成するコードがありますが、それは最後の値のセットのみを出力します。以下は私が今持っているものです。「storedct」と「datadct」は、2 つの与えられた辞書です。ここでは「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]   

提案をありがとう。

4

2 に答える 2

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
于 2012-09-07T14:42:29.460 に答える
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

あなたのニーズから遠く離れるべきではありません...

于 2012-09-07T14:45:30.987 に答える