2017-07-18 8 views
-1

から値ペアIはlist2の値でlist1で辞書を更新する必要が - 一致key, value一対のpython3 - マッチングキーでつのリストを更新し、別の

EDITに基づく: ここでは、辞書の中のキーを取ることはできません - それは一般的である必要もあります。 条件は、両方のリストにキーと値のペアが存在するかどうかです.list1はlist2のすべてのキーと値のペアで更新する必要があります。一致しない場合は変更しないでください。明日は、フレックスコネクトのファブリック値を更新する必要があります。

list1 = [{ 
        "key": "wireless.fabric", 
        "value": "" 
        "descr": "" 
       }, 
       { 
        "key": "wireless.flexConnect", 
        "value": "" 
        "descr": "" 
       }, 
       { 
        "key": "wireless.primaryAuthServer", 
        "value": "" 
        "descr" : "" 
       }, 
       { 
        "key": "wireless.secondaryAuthServer", 
        "value": "" 
        "descr" : "" 

       }, 
       { 
        "key": "wireless.authMode", 
        "value": "central" 
        "descr": "" 
       } 
       ] 
list2 = [{ 
        "key": "wireless.primaryAuthServer", 
        "value": "1.1.1.1" 
        "descr": "primary server details" 
       }, 
       { 
        "key": "wireless.secondaryAuthServer", 
        "value": "2.2.2.2" 
        "descr": "secondary server details" 
       }] 

私はコードスニペットを持っていますが、構文エラーがあります。

for d in list1: 
    if(d[k] == d1[k] for d1 in list2 for k in d): 
      d[k] = [d1[k] for d1 in list2 for k in d] 

3行目の構文エラー!

+1

そして、あなたが公正な人物を試してみましたでしょうか? –

+0

'list2'を' key => value'マップに変換し、 'list1'をループして一致するキーを前述のマップの値で更新します。 – zwer

+0

list2のキーと値のペアを取得する - 同じキーと値のペアがlist1にある場合 - それを更新する - 他のすべての辞書をそのままにします。作成できません - list2はlist1--キー、値のペアも一般化する必要があります –

答えて

0

それは簡単な反復ではありませんか?

for data1 in list1: 
    for data2 in list2: 
     if data1["key"] == data2["key"]: 
      data1["value"] = data2["value"] 
      break 

注:あなたはデータを適切に表現していないと思います。

dict2 = {"wireless.primaryAuthServer": "1.1.1.1", "wireless.secondaryAuthServer": "2.2.2.2"} 
+0

"キー"、 "値"を直接取ることはできません - 何でも構いませんが、すべての辞書で同じです。 –

+0

入力が自動生成されます。私は変更できないこの2つのリストを反復する必要があります。 –

+0

@RanjuSunil生成された入力から新しい辞書を作成してみませんか? –

0

回答は次のとおりです:リスト2の項目について

:インデックスの 、ITEM1が列挙(リスト1)中:item.keysでキーの (): より良い表現は次のようなものになるだろうもしitem1.keys()内のキー: 場合ITEM1 [キー] ==アイテム[キー]: リスト1 [インデックス] =項目 プリント(リスト1)

関連する問題