鍵值對我有兩個詞典:比較兩個字典並打印在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'}' –