第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

Python-Flatting字典,其中某些鍵“缺失”

Python-Flatting字典,其中某些鍵“缺失”

慕斯709654 2021-04-10 15:11:56
有沒有更清潔的方法可以做到這一點?我正在檢查嵌套字典中的特定鍵,并將其分配給變量。我將使用它在短時間內使mysql插入。我的主要問題是,如果密鑰不存在(有時會發(fā)生),我不希望代碼失敗,我只想將變量發(fā)送為空。這段代碼似乎可以正常工作,但是我必須做一些類似于20個不同鍵值的事情,所以我想確保自己以最佳方式進行操作if 'Model' in  ItemAttributes:    Model=ItemAttributes['Model']['value']else:    Model=''
查看完整描述

3 回答

?
翻過高山走不出你

TA貢獻1875條經驗 獲得超3個贊

dict.get

這是一種解決方案:


Model = ItemAttributes.get('Model', {}).get('value', '')

如果ItemAttributes詞典中不存在“模型”鍵,則返回一個空的詞典,并在該詞典上使用dict.get('value', '')。當然,如果“模型”鍵不存在,這將返回一個空字符串。


如果別的

另一種解決方案是添加一個額外的函數(shù)調用,并對該函數(shù)進行測試以檢查密鑰是否存在。在這里,我們使用三元語句。這實際上是您現(xiàn)在正在執(zhí)行的操作,但是將邏輯包裝在一個函數(shù)中以方便重復訪問:


def get_value(d, key1, key2):

    return d[key1][key2] if key1 in d else ''


Model = get_value(ItemAttributes, 'Model', 'value')

捕捉KeyError

一個更通用的解決方案是使用try/except和catch KeyError。如果缺少任何鍵,該函數(shù)將返回一個空字符串。否則,在給定鍵列表的情況下,reduce+getitem將循環(huán)瀏覽嵌套字典以訪問適當?shù)闹怠?/p>


from functools import reduce

from operator import getitem


def getFromDict(dataDict, mapList):

    try:

        return reduce(getitem, mapList, dataDict)

    except KeyError:

        return ''


Model = getFromDict(ItemAttributes, ['Model', 'Value'])


查看完整回答
反對 回復 2021-04-20
?
慕森卡

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

model = ItemAttributes.get('Model', {}).get('value', '')

不知道它是否更好,但是可以!:)


查看完整回答
反對 回復 2021-04-20
?
慕哥6287543

TA貢獻1831條經驗 獲得超10個贊

使用get通常是最好的解決方案。另一個解決方案是捕獲KeyError異常:


try: 

    Model=ItemAttributes['Model']['value']

except KeyError:

    Model=''

模型將被設置為'',如果'Model'不是ItemAttributes或者'value'不ItemAttributes['Model']


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

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

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

公眾號

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