8
如果鍵不在dict.keys()中,我想將一個鍵值對插入字典中。 基本上我可以如果它不存在,Python會更新字典中的一個鍵
if key not in d.keys():
d[key] = value
做,但有沒有更好的辦法?或者什麼是這個問題的pythonic解決方案?
如果鍵不在dict.keys()中,我想將一個鍵值對插入字典中。 基本上我可以如果它不存在,Python會更新字典中的一個鍵
if key not in d.keys():
d[key] = value
做,但有沒有更好的辦法?或者什麼是這個問題的pythonic解決方案?
您的語法無效,您也不需要致電d.keys()
。
if key not in d:
d[key] = value
就夠了。沒有更清晰,更可讀的方法。
您可以用dict.get()
再次更新,這將返回現有值,如果鍵已經存在:
d[key] = d.get(key, value)
,但我強烈反對這一點;這是代碼打高爾夫球,妨礙維護和可讀性。
>>> d = {1: 'one'}
>>> d.setdefault(1, '1')
'one'
>>> d # d has not changed because the key already existed
{1: 'one'}
>>> d.setdefault(2, 'two')
'two'
>>> d
{1: 'one', 2: 'two'}
'dict.setdefault()'真的應該只嘗試過訪問值時使用。 –
@MartijnPieters:爲什麼那麼重要?名字'setdefault()'清楚地描述發生了什麼 - 它也返回一個值並不重要,而且有點古怪的IMO。你能提供一個快速的解釋,或者是一個鏈接,爲什麼這是不可取的? – mhawke
您可以在需要存在值的表達式中使用它,例如在分組循環中:'對於iterable中的obj:d.setdefault(key_for_obj(obj),[])。append(obj)'。沒有什麼古怪的價值被返回,*這是方法的全部重點*。 –