在python字典中查找和替换字符串

时间:2013-11-13 18:21:21

标签: python-3.x dictionary replace

我有一个类似的字典:

d = {'alleged': ['truths', 'fiels', 'fact', 'infidelity', 'incident'],
 'greased': ['axle', 'wheel', 'wheels', 'fields', 'enGine', 'pizza'],
 'plowed': ['fields', 'field', 'field', 'incident', '', '']}

我想重复一遍,将一些项目换成另一个字符串。要查找的字符串和要替换它们的字符串也在字典中,其中键是要查找的字符串,值是要替换它的字符串:

d_find_and_replace = {'wheels':'wheel', 'Field': 'field', 'animals':'plants'}

我尝试使用类似的函数:

def replace_all(dic1, dic2):
    for i, j in dic.items():
        dic3 = dic1.replace(i, j)
    return(dic3)

但是它不起作用,因为很明显,它在其中使用了替换内置函数replace,并且不可能将它用于字典。有关如何做到这一点的任何建议?非常感谢您的帮助。

编辑以纠正拼写错误。

2 个答案:

答案 0 :(得分:3)

尝试使用直接分配:

for key in d:
    li = d[key]
    for i,item in enumerate(li):
        li[i] = d_find_and_replace.get(item, item)

答案 1 :(得分:0)

这是一个解决方案。我还修复了你的词典,他们很乱。检查你的拼写,因为使用那些给定的键我认为只会有一个匹配将被替换。例如engine永远不会匹配enGine,除非您不关心匹配大写或小写,在这种情况下您可以使用if val.lowercase()

d = {'alleged': ['truths', 'fiels', 'fact', 'infidelity', 'incident'],
     'greased': ['axle', 'wheel', 'wheels', 'fields', 'enGine', 'pizza'],
     'plowed': ['fields', 'field', 'field', 'incident', '', '']}

d_find_and_replace = {'fields': 'field', 'engine': 'engine', 'incidint':'incident'}

keys_replace = d_find_and_replace.keys()
print d
for key in d.keys():
    for i, val in enumerate(d[key], 0):
        if val in keys_replace:
            index_to_replace = keys_replace.index(val)
            d[key][i] = d_find_and_replace[keys_replace[index_to_replace]]

print d