比较两个字典并在python中打印键值对
我有两本字典:比较两个字典并在python中打印键值对,python,dictionary,Python,Dictionary,我有两本字典: a= { "fruits": ["apple", "banana"] } b = { "fruits": ["apple", "carrot"]} 现在我想打印差异。我想 在这种情况下,输出应该是 {'fruits' : 'carrot'} 另外,如果键已更改-假设if已更改为 b = { "toy": "car"} 那么输出应该是 { "toy": "car"} 提前感谢。至于差异,您可以使用字典理解功能仅过滤a中的b键: >>> {key: b[ke
a= { "fruits": ["apple", "banana"] }
b = { "fruits": ["apple", "carrot"]}
现在我想打印差异。我想
在这种情况下,输出应该是
{'fruits' : 'carrot'}
另外,如果键已更改-假设if已更改为
b = { "toy": "car"}
那么输出应该是
{ "toy": "car"}
提前感谢。至于差异,您可以使用字典理解功能仅过滤
a
中的b
键:
>>> {key: b[key] for key in b if key in a}
{'fruits': 'banana'}
对于第二部分,“如果密钥已更改,
{'froot'}
不是有效的字典,并且密钥是不可变的。因此这是不可能的。至于差异,您可以使用字典理解来仅过滤a
中的b
键:
>>> {key: b[key] for key in b if key in a}
{'fruits': 'banana'}
对于第二部分,“如果密钥已更改,
{'froot'}
不是有效的字典,并且密钥是不可变的。所以这是不可能的。看起来dict.viewitems
可能是一个很好的查看方法。这将使我们能够轻松查看a
中哪些键/值对不在b
中:
>>> a = { 'fruits': 'apple' 'grape', 'vegetables': 'carrot'}
>>> b = { 'fruits': 'banana'}
>>> a.viewitems() - b.viewitems() # python3.x -- Just use `items` :)
set([('fruits', 'applegrape'), ('vegetables', 'carrot')])
>>> b['vegetables'] = 'carrot' # add the correct vegetable to `b` and try again.
>>> a.viewitems() - b.viewitems()
set([('fruits', 'applegrape')])
如果我们使用对称差分,我们甚至可以得到差分实际是什么:
>>> a.viewitems() ^ b.viewitems()
set([('fruits', 'applegrape'), ('fruits', 'banana')])
如果您只对更改了哪些键感兴趣,还可以对
viewkeys
(keys
)执行类似的操作。看起来dict.viewitems
可能是一个很好的查看方法。这将使我们能够轻松查看a
中哪些键/值对不在b
中:
>>> a = { 'fruits': 'apple' 'grape', 'vegetables': 'carrot'}
>>> b = { 'fruits': 'banana'}
>>> a.viewitems() - b.viewitems() # python3.x -- Just use `items` :)
set([('fruits', 'applegrape'), ('vegetables', 'carrot')])
>>> b['vegetables'] = 'carrot' # add the correct vegetable to `b` and try again.
>>> a.viewitems() - b.viewitems()
set([('fruits', 'applegrape')])
如果我们使用对称差分,我们甚至可以得到差分实际是什么:
>>> a.viewitems() ^ b.viewitems()
set([('fruits', 'applegrape'), ('fruits', 'banana')])
如果您只对更改了哪些键感兴趣,还可以使用
viewkeys
(python3.x上的keys
)执行类似的操作。您实际上无法拥有这些词典。字典不是这样工作的。既然它是a
中的一个键,但在b
中不存在,你想把'vegets'
也打印出来吗?这是无效的a={'fruits':'apple''grape','vegets':'carrot'}
@yopy,从技术上讲它是“有效的”,但这可能不是OP想要的:)@yopy两个相邻的字符串字面值串联在一起,所以的“水果”:“苹果”“葡萄”
就是的“水果”:“applegrape”
你不可能真正拥有那些字典。字典不是这样工作的。既然它是a
中的一个键,但在b
中不存在,你想把'vegets'
也打印出来吗?这是无效的a={'fruits':'apple''grape','vegets':'carrot'}
@yopy,从技术上讲它是“有效的”,但这可能不是OP想要的:)@yopy两个相邻的字符串字面值串联在一起,所以'fruits':'apple''grape'
只是'fruits':'applegrape'
非常感谢!viewitems对我帮助很大:)非常感谢!viewitems对我帮助很大:)