[英]Checking if a key exists and its value is not an empty string in a Python dictionary
從 Python 字典中的鍵/值對分配變量是否有明確的最佳實踐:
否則為變量分配默認值。
我想使用dict.get
:
my_value = dict.get(key, my_default)
但是,如果鍵存在並且值是空字符串,則會將空字符串分配給my_value
。 使用以下內容是否更好:
if key in dict and dict[key]:
my_value = dict[key]
else:
my_value = my_default
這將利用空字符串的真實性來確保僅將非空字符串分配給my_value
。
有沒有更好的方法來執行此檢查?
也許你的意思是:
a.get('foo',my_default) or my_default
我認為應該等同於你擁有的if-else
條件
例如
>>> a = {'foo':''}
>>> a.get('foo','bar') or 'bar'
'bar'
>>> a['foo'] = 'baz'
>>> a.get('foo','bar') or 'bar'
'baz'
>>> a.get('qux','bar') or 'bar'
'bar'
與其他版本相比,這方面的優勢非常明顯。 這很好,因為你只需要執行一次查找和因為or
短路(一旦它達到類似True
值,它就會返回它。如果沒有找到類似True的值, or
返回第二個值)。
如果您的默認值是一個函數,如果您將其寫為: d.get('foo',func()) or func()
,則可以調用它兩次。 在這種情況下,最好使用臨時變量來保存func
的返回值。
做你想做的最簡單的方法:
my_value = dict.get(key) or my_default
的or
如果它的計算結果非假將提供第一值,否則第二個。 與其他語言不同,Python不強制結果為布爾值,有時是非常有用的屬性。
這對我有用
try:
post_profile = record['ownerUsername']
except KeyError:
post_profile = "nouserwasfound"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.