为了账号安全,请及时绑定邮箱和手机立即绑定

在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条经验 获得超3个赞

使用.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 关注
  • 252 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信