python dict.update 与下标添加单个键/值对

标签 python dictionary

每个学期我至少有一个 Python 学生使用 dict.update() 添加单个键/值对,即:

mydict.update({'newkey':'newvalue'})

而不是

mydict['newkey'] = 'newvalue'

我不教这种方法,我不知道他们在哪里可以找到这样的例子,但我告诉他们不要这样做,因为它效率较低(可能会创建一个新的 2 元素字典)并且因为它是非标准。

老实说,我可以理解使用可见方法而不是这种语法的愿望 - 它可能感觉与其他方法调用更一致。但我认为这看起来像是一种新手方法。

在这一点上有人可以提供任何智慧吗?

最佳答案

基准测试表明您对其性能影响的怀疑似乎是正确的:

$ python -m timeit -s 'd = {"key": "value"}' 'd["key"] = "value"'
10000000 loops, best of 3: 0.0741 usec per loop
$ python -m timeit -s 'd = {"key": "value"}' 'd.update(key="value")'
1000000 loops, best of 3: 0.294 usec per loop
$ python -m timeit -s 'd = {"key": "value"}' 'd.update({"key": "value"})'
1000000 loops, best of 3: 0.461 usec per loop

也就是说,它在我的机器上慢了大约六倍。但是,如果您需要最高性能,Python 已经不是您会使用的语言,所以我只建议使用在这种情况下最易读的语言。对于许多事情,这将是 [] 方式,尽管 update 在这样的情况下可能更具可读性:

configuration.update(
    timeout=60,
    host='example.com',
)

……或类似的东西。

关于python dict.update 与下标添加单个键/值对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15456158/

相关文章:

c++ - 无法使用 end() 获取 map 的第二个字段

python - 将空格分隔的文件转换为 CSV

python - xml.etree.ElementTree.ParseError : not well-formed (invalid token) due to "<" symbol in script

python - 通过 str.contains() 建立索引,然后将值插入到另一列中

python - 在python中将键从字典转换为int

java - 如何从文本文档创建 HashMap 并显示特定的键和值

javascript - 将一系列值映射到另一个值

Python 3.2 os 模块 - python 函数或 linux 命令?

python - Python中此问题的时间复杂度是多少?

python - 将数据框中的嵌套列表列更改为字典?