是否可以重命名/更改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}
答案 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}