簡體   English   中英

檢查鍵是否存在且其值不是 Python 字典中的空字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM