猿问

在Python中创建新的字典键时,使用`update`而不是简单地=来创建它有好处吗?

假设我正在制作一个不包含任何子键的键-值对。

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


凤凰求蛊
浏览 253回答 2
2回答

守着一只汪

使用.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中的函数调用总是会产生开销。

呼唤远方

在您的情况下,不建议使用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}
随时随地看视频慕课网APP

相关分类

Python
我要回答