字典理解匹配值?
Dictionary comprehension matching values?
我有这本字典:
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')]]}
我有这本字典:
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')]]}