亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

比較兩個詞典并檢查有多少(鍵,值)對是相等的

比較兩個詞典并檢查有多少(鍵,值)對是相等的

江戶川亂折騰 2019-08-06 15:42:11
比較兩個詞典并檢查有多少(鍵,值)對是相等的我有兩個詞典,但為了簡化,我將采用這兩個:>>> x = dict(a=1, b=2)>>> y = dict(a=2, b=2)現在,我想比較每key, value對中是否x具有相同的對應值y。所以我寫了這個:>>> for x_values, y_values in zip(x.iteritems(), y.iteritems()):         if x_values == y_values:             print 'Ok', x_values, y_values        else:             print 'Not', x_values, y_values它是有效的,因為tuple返回然后比較相等。我的問題:它是否正確?有更好的方法嗎?更好的不是速度,我說的是代碼優雅。更新:我忘了提到我必須檢查有多少key, value對是相等的。
查看完整描述

3 回答

?
慕妹3146593

TA貢獻1820條經驗 獲得超9個贊

如果你想知道兩個詞典中有多少個值匹配,你應該說:)

也許是這樣的:

shared_items = {k: x[k] for k in x if k in y and x[k] == y[k]}print len(shared_items)


查看完整回答
反對 回復 2019-08-06
?
月關寶盒

TA貢獻1772條經驗 獲得超5個贊

你想做的只是簡單 x==y


你做的不是一個好主意,因為字典中的項目不應該有任何順序。您可能正在[('a',1),('b',1)]與[('b',1), ('a',1)](相同的詞典,不同的順序)進行比較。


例如,看到這個:


>>> x = dict(a=2, b=2,c=3, d=4)

>>> x

{'a': 2, 'c': 3, 'b': 2, 'd': 4}

>>> y = dict(b=2,c=3, d=4)

>>> y

{'c': 3, 'b': 2, 'd': 4}

>>> zip(x.iteritems(), y.iteritems())

[(('a', 2), ('c', 3)), (('c', 3), ('b', 2)), (('b', 2), ('d', 4))]

差異只是一個項目,但您的算法將看到所有項目都不同


查看完整回答
反對 回復 2019-08-06
?
弒天下

TA貢獻1818條經驗 獲得超8個贊

def dict_compare(d1, d2):
    d1_keys = set(d1.keys())
    d2_keys = set(d2.keys())
    intersect_keys = d1_keys.intersection(d2_keys)
    added = d1_keys - d2_keys
    removed = d2_keys - d1_keys
    modified = {o : (d1[o], d2[o]) for o in intersect_keys if d1[o] != d2[o]}
    same = set(o for o in intersect_keys if d1[o] == d2[o])
    return added, removed, modified, same

x = dict(a=1, b=2)y = dict(a=2, b=2)added, removed, modified, same = dict_compare(x, y)


查看完整回答
反對 回復 2019-08-06
  • 3 回答
  • 0 關注
  • 631 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號