我有两个字典,假设它们是 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
的每个 keyX
、valueX
,我想检查 valueX
是否包含 来自
,如果是,我想用 regex
的 findXreplaceX
替换它并保存到相同的(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/