改变字典的所有键

时间:2018-04-06 12:33:41

标签: python dictionary

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

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}

4 个答案:

答案 0 :(得分:8)

如果要更改现有的dict,而不是创建新的dict,可以循环键,pop旧的键,并使用旧值插入新的修改后的键。

>>> 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)将防止因并发修改而导致的错误。)

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

如评论中所述,在循环中更新dict中的键实际上可能比dict理解慢。如果这是一个问题,你也可以使用dict理解创建一个新的dict,然后clear现有的dict,update使用新的值。

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

答案 1 :(得分:4)

您可以使用:

{k[2:]: v for k, v in a_dict.items()}

答案 2 :(得分:3)

你可以通过词典理解轻松地做到这一点。

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

a_dict = { k[2:]:v for k,v in a_dict.items() }

结果:

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

答案 3 :(得分:2)

您可以使用str.replace功能替换匹配所需格式的密钥。

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

a_dict = {k.replace('a_', ''): v for k, v in a_dict.items()}
# {'var1': 0.05, 'var2': 4.0, 'var3': 100.0, 'var4': 0.3}