键值对我有两个词典:比较两个字典并打印在python
a= { "fruits": ["apple", "banana"] }
b = { "fruits": ["apple", "carrot"]}
现在我想打印的差异。我想 在这种情况下,输出应为
{'fruits' : 'carrot'}
也钥匙是否已经改变 - 假设,如果变为
b = { "toy": "car"}
那么输出应该是
{ "toy": "car"}
提前致谢。
键值对我有两个词典:比较两个字典并打印在python
a= { "fruits": ["apple", "banana"] }
b = { "fruits": ["apple", "carrot"]}
现在我想打印的差异。我想 在这种情况下,输出应为
{'fruits' : 'carrot'}
也钥匙是否已经改变 - 假设,如果变为
b = { "toy": "car"}
那么输出应该是
{ "toy": "car"}
提前致谢。
看起来好像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
)做类似的事情。
非常感谢! viewitems对我有很大的帮助:) – user3349548
至于差别,您可以使用字典解析仅过滤b
密钥,其在a
:
>>> {key: b[key] for key in b if key in a}
{'fruits': 'banana'}
到第二部分,“如果键已经改变”,{'froot'}
ISN是一个有效的字典,而且键是不可变的。所以这是不可能的。
你实际上不能拥有这些字典。字典不能像那样工作。 – user2357112
你是否也希望“蔬菜”被打印出来,因为它是“b”中不存在的“a”中的一个键? – jayelm
这是无效的'a = {'fruits':'apple''grape','vegetables':'carrot'}' –