Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如果两个字典的值/键对匹配,则用另一个字典的值替换列表对象字典值_Python_Dictionary - Fatal编程技术网

Python 如果两个字典的值/键对匹配,则用另一个字典的值替换列表对象字典值

Python 如果两个字典的值/键对匹配,则用另一个字典的值替换列表对象字典值,python,dictionary,Python,Dictionary,我有两本这样的字典: dict1 = {'parent1': ['AAA','BBB'],'parent2': ['AAA','CCC'],'parent3': ['ZZZ', 'BBB']} dict2 = {'AAA': 'alfa','BBB': 'beta','CCC': 'gamma', 'ZZZ':'epsilon'} 我想买下面的字典 dict3 = {'parent1': ['alfa','beta'],'parent2': ['alfa','gamma'],'parent3'

我有两本这样的字典:

dict1 = {'parent1': ['AAA','BBB'],'parent2': ['AAA','CCC'],'parent3': ['ZZZ', 'BBB']}
dict2 = {'AAA': 'alfa','BBB': 'beta','CCC': 'gamma', 'ZZZ':'epsilon'}
我想买下面的字典

dict3 = {'parent1': ['alfa','beta'],'parent2': ['alfa','gamma'],'parent3': ['epsilon', 'beta']}
其中,如果与dict2键匹配,则存储在列表中的dict1值将替换为dict2值

我试过了

dict3={k: dict2.get(v, v) for k, v in dict1.items()}
但它又回来了

TypeError: unhashable type: 'list'

您缺少对
v
值(即列表)的迭代

结果:

{'parent3': ['epsilon', 'beta'], 'parent2': ['alfa', 'gamma'], 'parent1': ['alfa', 'beta']}

您缺少对
v
值(即列表)的迭代

结果:

{'parent3': ['epsilon', 'beta'], 'parent2': ['alfa', 'gamma'], 'parent1': ['alfa', 'beta']}

不太像蟒蛇,但也能起作用。恕我直言,同样的内容只写出来了

 dict3={k: [dict2[v[0]], dict2[v[1]]] for k, v in dict1.items()}
 prints {'parent3': ['epsilon', 'beta'], 'parent2': ['alfa', 'gamma'], 'parent1': ['alfa', 'beta']}
编辑:

 dict3={k: [dict2.get(v[0],v[0]), dict2.get(v[1],v[1])] for k, v in dict1.items()}
 prints {'parent3': ['epsilon', 'beta'], 'parent2': ['alfa', 'gamma'], 'parent1': ['alfa', 'beta']}

不太像蟒蛇,但也能起作用。恕我直言,同样的内容只写出来了

 dict3={k: [dict2[v[0]], dict2[v[1]]] for k, v in dict1.items()}
 prints {'parent3': ['epsilon', 'beta'], 'parent2': ['alfa', 'gamma'], 'parent1': ['alfa', 'beta']}
编辑:

 dict3={k: [dict2.get(v[0],v[0]), dict2.get(v[1],v[1])] for k, v in dict1.items()}
 prints {'parent3': ['epsilon', 'beta'], 'parent2': ['alfa', 'gamma'], 'parent1': ['alfa', 'beta']}

不处理值不在dict2中的情况(虽然我说过dict2总是dict1的值,但我读错了问题,现在我们的答案完全相同;)这取决于你是否喜欢一个额外的for循环,以及dict1是否总是包含两个值的列表。不处理值不在
dict2
True中的情况我读错了问题,尽管我说过dict2总是dict1的值现在我们的答案完全相同;)这取决于您是否喜欢额外的for循环,以及dict1是否始终包含具有两个值的列表。