亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在Python中創建新的字典鍵時,使用`update`而不是簡單地=來創建它有好處嗎?

在Python中創建新的字典鍵時,使用`update`而不是簡單地=來創建它有好處嗎?

鳳凰求蠱 2021-04-08 17:15:45
假設我正在制作一個不包含任何子鍵的鍵-值對。self.profiles[server.id][author.id]['games']['accounts']['league']已經存在。使用有什么好處或目的嗎self.profiles[server.id][author.id]['games']['accounts']['league'].update({'plays': true})超過self.profiles[server.id][author.id]['games']['accounts']['league']['plays'] = True?
查看完整描述

2 回答

?
守著一只汪

TA貢獻1872條經驗 獲得超4個贊

使用.update只有一個單一的關鍵變化將是顯著效率較低。


我臺式機上的簡單基準


$ python -m timeit -s 'd={}' 'd.update({"x":3})'

1000000 loops, best of 3: 0.263 usec per loop

$ python -m timeit -s 'd={}' 'd["x"]=3'

10000000 loops, best of 3: 0.0409 usec per loop

這是因為用來更新密鑰.update,它需要創建一個新的字典,然后遍歷字典中的所有密鑰(即使只有一個)。另外,Python中的函數調用總是會產生開銷。


查看完整回答
反對 回復 2021-04-20
?
呼喚遠方

TA貢獻1856條經驗 獲得超11個贊

在您的情況下,不建議使用set item語法。


但是,如果您有多個對要添加到字典中,那么更新就在這里:


d = {'a':1, 'b':2}


new_pairs = {'c':3, 'd':4}


d.update(new_pairs)  


print(d)   # d = {'a':1, 'b':2, 'c':3, 'd':4}

這還會將d和new_pairs中的鍵值(更改為的值)更改為new_pairs[k]:


d = {'a':1, 'b':"before"}


new_pairs = {'b':"after", 'c':3, 'd':4}


d.update(new_pairs)


print(d)  # {'a': 1, 'b': 'after', 'c': 3, 'd': 4}


查看完整回答
反對 回復 2021-04-20
  • 2 回答
  • 0 關注
  • 279 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號