Python嵌套字典内部比较值

时间:2019-06-14 15:06:49

标签: python python-3.x dictionary

我正在尝试使用键来处理字典,并且每个键都具有值列表,并从中创建一个嵌套的字典。并且还要比较每个键列表中的相等值,并使用相等和不相等的值列表生成一个新字典。

我能够遍历每个键的值列表并对其进行处理,以获取一个新的变量,以便使用该变量创建新的嵌套字典。但是目前,第一个键值引发了null异常。

dict1 = {a:[d,e,f], b:[p,q,r]}
dict2 = {d:100, e:100, f:100, p:100, q:100, r:100}
dict3 = {d:text1, e: text2, f: text3}

for i in dict1.keys():
    for x in dict1[i]:
        if dict2[x] == 100:
            string = re.findall(r'sometext in text',dict3[x])[0]
            ver = re.search('(?is)<i>(.+?)</i>', match_string).group(1)
            d[i][x] = ver

预期结果:

d = { a:{d:ver1, e:ver2, f:ver3}, b:{p:ver4, q:ver5, r:ver6 }

在遍历每个嵌套值之后,需要将每个值与其对等值进行比较,并使用匹配的值的键将其排列在新字典中。如下所示:

if d's ver1 = e's ver2 =! f's ver3
    dict4 = {a: { equal:[d,e], unequal: [f]}

1 个答案:

答案 0 :(得分:1)

我不知道dict3在您所需的输出中起什么作用,但这将获得所需的输出:

dict1 = {'a':['d','e','f'], 'b':['p','q','r']}
dict2 = {'d':100, 'e':100, 'f':100, 'p':100, 'q':100, 'r':100}

result = {key1: {key2: dict2[key2] for key2 in val1} for key1, val1 in dict1.items()}
print(result)

输出:

{
  "a": {
    "d": 100,
    "e": 100,
    "f": 100
  },
  "b": {
    "p": 100,
    "q": 100,
    "r": 100
  }
}