Python将一个字典复制为键值的有效方法

标签 python dictionary

我正在使用 python 开发一个监控工具。 它有一个全局字典,所有主机作为键,它们的详细信息作为值。

目前我是这样做的:

host = hostname
hostDictionary["a"] = a
hostDictionary["b"] = b
hostDictionary["c"] = c
globalDictionary[host] = hostDictionary

我的问题是:

  1. 这是将整个 hostDictionary 复制到全局键中还是只是引用它?

  2. 有更好的方法吗?

  3. 这样更快吗?

    globalDictionary[host]["a"] = a
    globalDictionary[host]["b"] = b
    globalDictionary[host]["c"] = c
    

最佳答案

我从 Python CLI 得到这个:

>>> a = {}
>>> b = {}
>>> c = {}
>>> a["foo"] = 1
>>> b = a
>>> c = a.copy()
>>> b["bar"] = 2
>>> a
{'foo': 1, 'bar': 2}
>>> b
{'foo': 1, 'bar': 2}
>>> c
{'foo': 1}

这意味着:

  1. 您只是在 globalDictionary 的键中引用了 hostDictionary。如果你想要一个副本,请调用 hostDictionary.copy()hostDictionary.deepcopy() 就像 hashcode55 所说的那样。

  2. “更好”取决于您的用例。但是,例如,您可以刚刚声明 hostDictionary = {'a': a, 'b': b, 'c': c}

  3. 在 Python 解释器端执行您放在那里的操作速度较慢,因为(假设没有内置任何内容来优化您的原始示例)引擎将需要查找 引用的对象globalDictionary[host] 为每个操作写之前。

关于Python将一个字典复制为键值的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38491461/

相关文章:

javascript - 如何检查网站是否有 javascript?

python - 总和等于 0 的最大子数组

Python - 如何找到文件中的行位置,并围绕该行移动?

dictionary - Swift:如何在字符串表达式中打印出字典键的值?

android - 在android中动态填充 map

Python RegEx - Negative Lookahead 在 a 之后不起作用?量词

python - 在 Python 中操作 for 循环的索引

python - 如果我在 Python 字典上调用 iteritems(),结果列表的顺序是如何确定的?

python - 如何将列表中的每个字典转换为Python中的嵌套字典?

php - 获取一个词的同义词