字典理解匹配值?



我有这本字典:

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')]]}

相关内容

  • 没有找到相关文章

最新更新