如何替换字典的所有键中的子字符串
我想更改字典中键的名称。我知道这是不可能的,为此我必须使用旧值创建新键并删除原始键(我不太喜欢)或在`for 循环中创建字典的副本并在每次迭代中更改密钥的名称。
当前字典:
{'form-4-var0': 125547, 'form-4-var1': 'NTMC-A935', 'form-4-var2': 'OTOGL'}
所需的字典:
{'var0': 125547, 'var1': 'NTMC-A935', 'var2': 'OTOGL'}
限制条件:尽可能保持顺序(非强制性)
我试过的:
我尝试了这样的事情,为每个键名添加了一些虚拟文本,并且奏效了。
d1 = {'form-4-var0': 125547, 'form-4-var1': 'NTMC-A935', 'form-4-var2': 'OTOGL'}
d2 = {}
for key in d1:
key_modified = //key without 'form-n-' substring
d2[key_modified] = d1[key]
但是如何删除子字符串form-n-?
一般来说n只有一位,但也可以是2位、3位或m位。我应该使用一些正则表达式吗?
有没有更pythonic的方法来做到这一点?
回答
您可以使用 dict comprehension 来做到这一点。要删除您可以使用的额外文本.replace()
old = {'form-4-var0': 125547, 'form-4-var1': 'NTMC-A935', 'form-4-var2': 'OTOGL'}
new = {k.replace('form-4-',''):v for k,v in old.items()}
另一种选择是使用拆分,但我不推荐这么多,因为信息可能在之前 form-4-
old = {'form-4-var0': 125547, 'form-4-var1': 'NTMC-A935', 'form-4-var2': 'OTOGL'}
new = {k.split('form-4-')[1]:v for k,v in old.items()}
产出
{'var0': 125547, 'var1': 'NTMC-A935', 'var2': 'OTOGL'}