如何替换字典的所有键中的子字符串

我想更改字典中键的名称。我知道这是不可能的,为此我必须使用旧值创建新键并删除原始键(我不太喜欢)或在`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'}


以上是如何替换字典的所有键中的子字符串的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>