Python 字典理解匹配值?

Python 字典理解匹配值?,python,dictionary,list-comprehension,dictionary-comprehension,Python,Dictionary,List Comprehension,Dictionary Comprehension,我有这本字典: Dict1= {'0': [('L', 'Any'), ('D', 'Any')], '1': [('D', 'Any'), ('E', 'Any'), ('D', 'Any')]} 还有这个: Dict2= {'0': ['0', '1', '2'], '1': ['0', '1', '2'], '2': ['0', '1', '2'], '3': ['0', '1', '2']} 我希望将dict 1的键与dict 2的值匹配,并获得预期的输出: NewDict

我有这本字典:

Dict1= {'0': [('L', 'Any'), ('D', 'Any')],
 '1': [('D', 'Any'), ('E', 'Any'), ('D', 'Any')]}
还有这个:

Dict2= {'0': ['0', '1', '2'],
 '1': ['0', '1', '2'],
 '2': ['0', '1', '2'],
 '3': ['0', '1', '2']}
我希望将dict 1的键与dict 2的值匹配,并获得预期的输出:

NewDict = {'0': [[('L', 'Any'), ('D', 'Any')],
  [('D', 'Any'), ('E', 'Any'), ('D', 'Any')]],
 '1': [[('L', 'Any'), ('D', 'Any')],
  [('D', 'Any'), ('E', 'Any'), ('D', 'Any')]],
 '2': [[('L', 'Any'), ('D', 'Any')],
  [('D', 'Any'), ('E', 'Any'), ('D', 'Any')]],
 '3': [[('L', 'Any'), ('D', 'Any')],
  [('D', 'Any'), ('E', 'Any'), ('D', 'Any')]]}
我尝试过以下代码:

NewDict= {k: [Dict1[e] for e in v] for k, v in Dict2.items()}

但是我得到了一个错误:
KeyError:'2'
我知道它来自dict2中的值2,它没有任何对应的值,但我必须以这种形式保存它。有没有办法在不修改dict2的情况下解决这个问题?谢谢你

你的听写理解几乎是正确的。您需要一个if条件来检查键是否存在于
Dict_1

Dict1= {'0': [('L', 'Any'), ('D', 'Any')],
 '1': [('D', 'Any'), ('E', 'Any'), ('D', 'Any')]}


Dict2= {'0': ['0', '1', '2'],
 '1': ['0', '1', '2'],
 '2': ['0', '1', '2'],
 '3': ['0', '1', '2']}



NewDict = {k:[Dict1[i] for i in v if i in Dict1] for k, v in Dict2.items()}

print(NewDict)
输出

{'0': [[('L', 'Any'), ('D', 'Any')],
       [('D', 'Any'), ('E', 'Any'), ('D', 'Any')]],
 '1': [[('L', 'Any'), ('D', 'Any')],
       [('D', 'Any'), ('E', 'Any'), ('D', 'Any')]],
 '2': [[('L', 'Any'), ('D', 'Any')],
       [('D', 'Any'), ('E', 'Any'), ('D', 'Any')]],
 '3': [[('L', 'Any'), ('D', 'Any')],
       [('D', 'Any'), ('E', 'Any'), ('D', 'Any')]]}