python - 如何根据另一个字典查找和替换一个字典中的值

标签 python python-3.x regex dictionary replace

我有两个字典,假设它们是 regex = {}dict = {}

首先包含查找和替换模式,分别作为。所以它看起来像这样:

# about 50 key/value pairs
regex = {
    'find1' : 'replace1',
    'find2' : 'replace2',
    ...
    'findX' : 'replaceX'
}

第二个看起来像这样:

# about 500,000 key/value pairs
dict = {
    'key1' : 'value1',
    'key2' : 'value2',
    ...
    'keyX' : 'valueX'
}

对于来自 dict 的每个 keyXvalueX,我想检查 valueX 是否包含 来自 regex 的 findX,如果是,我想用 replaceX 替换它并保存到相同的(dict)或新字典中或列表(在下面的代码中使用了新列表)。

我尝试过这段代码:

for keyX, valueX in dict.items():
    for patterns in regex.items():
        if re.search(patterns[0], valueX)
            new_value = re.sub(patterns[0], patterns[1], valueX)

    new_line = keyX + '\t' + new_value

    new_list.append(new_line)

我的机制工作错误:对于每个 valueX 它应该检查它是否包含每个 findX 中的任何一个,将其替换为 replaceX,保存,但相反,我的输出列表变得相当困惑。为不同的 keyX 重复 new_value。我知道迭代我的字典(可能是正则表达式字典)有问题,但我不知道如何解决这个问题。


编辑(示例):

regex = {
   's t n': 's n',
   'e0': 'i0',
   'j a0': 'j i0'
}

dict = {
    'известный': 'i0 z vj e1 s t n y0 j',
    'сестра': 'sj e0 s t r a1'
    'январь': 'j a0 n v a1 rj'
}

最佳答案

尝试:

regex = {
   's t n': 's n',
   'e0': 'i0',
   'j a0': 'j i0'
}

dict = {
    'известный': 'i0 z vj e1 s t n y0 j',
    'сестра': 'sj e0 s t r a1',
    'январь': 'j a0 n v a1 rj'
}
for k1,v1 in regex.items():
    for k2,v2 in dict.items():
        if k1 in v2:
            dict[k2]=dict[k2].replace(k1,v1)

你会得到:

dict

{'известный': 'i0 z vj e1 s n y0 j',
 'сестра': 'sj i0 s t r a1',
 'январь': 'j i0 n v a1 rj'}

关于python - 如何根据另一个字典查找和替换一个字典中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55674476/

相关文章:

java - 我该如何进行此搜索 db.collection.find( { foo :/^bar$/i } ); on mongo but using Mongo Java Driver

python - 如果 x 在 RegEx 列表中

python - 如何编写一个接受正整数 N 并返回前 N 个自然数的列表的函数

python - Django 注释添加时间间隔到日期

python - 安装了 cairosvg 和 cairocffi 但在导入时出错

python-3.x - 使用 Homebrew 软件安装但未使用更新版本的 Python3

Python3如何尝试多个函数查找并赋值?

javascript - 正则表达式获取不带括号的数字 ()

python - 如何为 python 3.7 正确安装 Flask 以运行这个 github 项目?

python - 如何把折线图和散点图放在同一个图中?