python - 改变字典的所有键

标签 python dictionary

是否可以重命名/更改字典的所有键?例如,让我们看一下下面的字典:

a_dict = {'a_var1': 0.05,
          'a_var2': 4.0,
          'a_var3': 100.0,  
          'a_var4': 0.3}

我想删除键中的所有 a_,所以我最终得到了

a_dict = {'var1': 0.05,
          'var2': 4.0,
          'var3': 100.0,  
          'var4': 0.3}

最佳答案

如果你想改变现有的字典,而不是创建一个新的,你可以循环键,弹出旧的,然后插入新的、修改过的键和旧的值。

>>> for k in list(a_dict):
...     a_dict[k[2:]] = a_dict.pop(k)     
...
>>> a_dict
{'var2': 4.0, 'var1': 0.05, 'var3': 100.0, 'var4': 0.3}

(迭代 list(a_dict) 将防止由于并发修改而导致的错误。)

严格来说,这也不会改变现有的 key ,而是插入新的 key ,因为它必须根据新的哈希码重新插入它们。但它确实改变了整个词典。


如评论中所述,在循环中更新字典中的键实际上可能比字典理解慢。如果这是一个问题,您还可以使用字典理解创建一个新字典,然后清除现有字典并使用新值更新它。

>>> b_dict = {k[2:]: a_dict[k] for k in a_dict}
>>> a_dict.clear()
>>> a_dict.update(b_dict)

关于python - 改变字典的所有键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49692917/

相关文章:

python - 计算标准偏差

python - 如何获取 Set 对象中元素的索引

python - multiprocessing.Queue 和 Queue.Queue 有什么不同?

java - 不是 "unsafe operation"错误 : Incompatible types Object cannot be converted to Entry<String, boolean 值>

python - 如何获取带注释的语法树?

python - 使用 sqlalchemy 从 mysql 获取大量数据的最佳方法是什么?

python - 如何将嵌套数据示例中的两个值抽象到 pandas Dataframe 中?

C++多索引图实现

python - 在不知道键/值的情况下对字典列表进行排序

python - 从具有坐标和值的字典构建 numpy 矩阵