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

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

字典相等.

字典相等.

DIEA 2021-03-03 09:10:33
我有一個查詢字段列表:>>> l = ['A', 'C', 'Z', 'M']我將需要在此查找列表上測試2個詞典的相等性:>>> d1 = {'A': 3,'F': 4,'Z': 1}>>> d2 = {'B': 0,'A': 3,'C': 7}如果滿足以下任一條件,則對列表中任何字段'x'的相等性測試成功:1.如果兩個字典中都不存在'x'2.如果'x'存在并且d1 [x] = = d2 [x]僅當根據上述條件,列表中的所有字段都成功時,equity函數才返回匹配項。因此,對于上述命令-Z失敗,C失敗,A成功,M成功。但是,對字典的相等性測試應報告失敗。實現這一目標的最短方法是什么?
查看完整描述

3 回答

?
互換的青春

TA貢獻1797條經驗 獲得超6個贊

您可以使用all:


>>> from itertools import chain

>>> l = ['A', 'C', 'Z', 'M']

>>> d1 = {'A': 3,'F': 4,'Z': 1}

>>> d2 = {'B': 0,'A': 3,'C': 7}


>>> all( x not in chain(d1,d2) or ((x in d1 and x in d2) and \

                                            d1.get(x) == d2.get(x))  for x in l)

False

>>> l = ['Z']

>>> d1 = {'A': 3,'F': 4,'Z': None}


>>> all( x not in chain(d1,d2) or ((x in d1 and x in d2) and  \

                                            d1.get(x) == d2.get(x))  for x in l)

False

all將返回True只有在迭代的所有值都Trueothwerwise它會返回False。


查看完整回答
反對 回復 2021-03-29
?
慕田峪7331174

TA貢獻1828條經驗 獲得超13個贊

嘗試這個:


success = True

for x in l:

  if not (((x not in d1) and (x not in d2)) or (d1.get(x) == d2.get(x))):

    success = False


查看完整回答
反對 回復 2021-03-29
  • 3 回答
  • 0 關注
  • 183 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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