我有一个类似的字典:
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
,并且不可能将它用于字典。有关如何做到这一点的任何建议?非常感谢您的帮助。
编辑以纠正拼写错误。
答案 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