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

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

在Python 3.7中一步初始化并添加字典中的列表

在Python 3.7中一步初始化并添加字典中的列表

月關(guān)寶盒 2022-09-13 10:01:14
我有一個(gè)字典,其中鍵是字符串,值是列表?,F(xiàn)在,在添加與給定鍵關(guān)聯(lián)的值時(shí),我總是必須檢查是否有任何列表,否則我必須初始化為空列表,有點(diǎn)像下面的代碼段:      if not k in myDict:           myDict[k] = []       myDict[k].append(v)我想知道是否有任何方法可以將這些步驟合并到python 3.7中的單個(gè)步驟中。
查看完整描述

2 回答

?
明月笑刀無情

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超4個(gè)贊

至少有三種方法:


用dict.setdefault


>>> data = {}

>>> data.setdefault('foo', []).append(42)

>>> data

{'foo': [42]}

使用 ,這與 不同,它采用可調(diào)用:defaultdict.setdefault


>>> from collections import defaultdict

>>> data = defaultdict(list)

>>> data

defaultdict(<class 'list'>, {})

>>> data['foo'].append(42)

>>> data

defaultdict(<class 'list'>, {'foo': [42]})

最后,子類和實(shí)現(xiàn):dict__missing__


>>> class MyDict(dict):

...     def __missing__(self, key):

...         self[key] = value  = []

...         return value

...

>>> data = MyDict()

>>> data['foo'].append(42)

>>> data

{'foo': [42]}

請注意,您可以將最后一個(gè)視為最靈活的密鑰,您可以訪問處理它時(shí)缺少的實(shí)際密鑰。 是一個(gè)類工廠,它也生成一個(gè) 子類。但是,可調(diào)用的沒有傳遞任何參數(shù),但是,它足以滿足大多數(shù)需求。defaultdictdict


此外,請注意,and 方法將保留默認(rèn)行為,這在創(chuàng)建數(shù)據(jù)結(jié)構(gòu)后可能是不可取的,您可能想要通常,或者至少,您不想再添加鍵。defaultdict__missing__KeyErrormydict[key]


在這兩種情況下,您都可以從字典子類創(chuàng)建常規(guī)字典,例如.這通常應(yīng)該非??欤词箤τ诖笮臀矬w也是如此,特別是如果它是一次性成本。對于 ,您還可以將 設(shè)置為 ,舊行為將返回:dict(data)dictdefaultdictdefault_factoryNone


>>> data = defaultdict(list)

>>> data

defaultdict(<class 'list'>, {})

>>> data['foo']

[]

>>> data['bar']

[]

>>> data

defaultdict(<class 'list'>, {'foo': [], 'bar': []})

>>> data.default_factory = None

>>> data['baz']

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

KeyError: 'baz'

>>>


查看完整回答
反對 回復(fù) 2022-09-13
?
慕運(yùn)維8079593

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超5個(gè)贊

您可以使用 :dict.setdefault


>>> d = {}

>>> d.setdefault('k', []).append(1)

>>> d

{'k': [1]}

>>> d.setdefault('k', []).append(2)

>>> d

{'k': [1, 2]}

關(guān)于字典中method_descriptor的幫助:


dict.setdefault = setdefault(...)D.setdefault(k[,d]) -> D.get(k,d),如果 k 不在 D 中,也設(shè)置 D[k]=d


查看完整回答
反對 回復(fù) 2022-09-13
  • 2 回答
  • 0 關(guān)注
  • 152 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)