python3 - 两个dict列表 - 使用匹配的键更新一个列表,从另一个列中更新值对

时间:2017-07-18 18:11:50

标签: python list python-3.x dictionary

我需要使用list1中的值更新list2中的词典 - 基于匹配的key, value

编辑: 在这里,我不能把字典中的键 - 这也需要是通用的。 条件是如果两个列表中都存在键,值对 - list1需要使用list2中的所有键,值对进行更新 - 如果不匹配 - 则需要保持不变。明天我可能需要更新ghe flexconnect ot面料值。

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行语法错误!!

2 个答案:

答案 0 :(得分: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"}

答案 1 :(得分:0)

答案是:

表示list2中的项目:         对于index,enumerate(list1)中的item1:             for item.keys()中的键:                 如果键入item1.keys():                     if item1 [key] == item [key]:                         list1的[索引] =项 打印(列表1)