我有一個對象正在創建,有時它不會創建,即None
。返回缺少NONE對象
我執行以下 dic.get("findThis")
但由於dic
有時None
它會返回AttributeError: 'NoneType' object has no attribute 'get'
有喜歡使用
if not dic:
print "MISSING"
else:
#do your stuff`.
什麼是更好的方式來做到這一點檢查dic
生存了幾個解決方案?
我有一個對象正在創建,有時它不會創建,即None
。返回缺少NONE對象
我執行以下 dic.get("findThis")
但由於dic
有時None
它會返回AttributeError: 'NoneType' object has no attribute 'get'
有喜歡使用
if not dic:
print "MISSING"
else:
#do your stuff`.
什麼是更好的方式來做到這一點檢查dic
生存了幾個解決方案?
你在找三元運算符嗎?
result = dic.get("findThis") if dic else None
不,不是。例如,假設我做了類似於 ''[dic.get(「findThis」),dic.get(「findThis2」),dic.get(「findThis3」),dic.get(「findThis4」),dic.get (「findThis5」),dic.get(「findThis6」)]',他們都應該返回「MISSING」,而不必爲每個檢查。 –
你能詳細說明嗎?爲什麼dic可能變成None,看起來你應該只用空dict而不是None作爲默認值。 – teferi
'dic'從json響應返回,有時缺少。 –
可以使用defaultdict
的使用這樣的:
import collections
#example function returning the dict
def get_dict_from_json_response():
return {'findThis2':'FOUND!'}
defdic = collections.defaultdict(lambda: 'MISSING')
#get your dict
dic = get_dict_from_json_response()
if dic:
defdic.update(dic) #copy values
dic = defdiC#now use defaultdict
print [dic["findThis"],dic["findThis2"],dic["findThis3"],dic["findThis4"],dic["findThis5"],dic["findThis6"]]
輸出:
['MISSING', 'FOUND!', 'MISSING', 'MISSING', 'MISSING', 'MISSING']
沒有你的特定問題的背景下,我認爲你的做法是最好的這些情況。但是也許在更具體的情況下有更好的方法。 –
您的解決方案沒有任何問題。除非你不想打印缺少空字典,在這種情況下,如果dic不是None,你可以這樣做 –