使用正则表达式更改 Python 3 字典中的键值

use*_*587 1 python regex dictionary python-3.x

给定以下字典,如何返回从键中去除所有非数字的新键?

import re 

dict {'abc_12': 5, 'abc_1': 7, 'abc_34': 10}

for k in dict:
    re.sub('[^0-9]', '', k)
    # change value of first key to '12': 5
Run Code Online (Sandbox Code Playgroud)

Dan*_*man 5

如果我理解正确的话,您想用新的字典键替换实际的字典键,并删除所有非数字字符。

最简单的方法就是创建一个新字典:

new_dict = {re.sub('[^0-9]', '', k): v for k, v in my_dict.items()}
Run Code Online (Sandbox Code Playgroud)

但是,如果由于某种原因您绝对需要保留现有值,则需要为pop每个值插入一个带有现有值的新键。您需要确保您正在操作键的静态副本,否则迭代将包含您插入的新值,并且您会遇到各种麻烦。

for k in list(dict.keys()):
    v = my_dict.pop(k)
    new_k = re.sub('[^0-9]', '', k)
    my_dict[new_k] = v
Run Code Online (Sandbox Code Playgroud)