Python 3.x 在python字典中查找和替换字符串

Python 3.x 在python字典中查找和替换字符串,python-3.x,dictionary,replace,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 = {'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内置函数
replace
,并且不可能在字典中使用它。有什么建议吗?非常感谢你的帮助


编辑以更正拼写错误。

这里有一个解决方案。我还修好了你的字典,它们很乱。检查你的拼写,因为对于那些给定的键,我认为只有一个匹配项会被替换。例如,
engine
将永远不会匹配
engine
,除非您不想匹配小写或大写,在这种情况下,如果val.lowercase()


尝试使用直接分配:

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

你的
d\u find\u和\u replace
dict有点乱。检查您的引号是否在正确的位置。您的
d
词典也有几个错误(声称的
上没有开头引号,在
润滑的
列表中关闭括号)。首先清理它们,这样它就可以工作了,然后你就可以调试替换了。谢谢你的解决方案,但我认为这是Python2,不是吗?我得到一个错误:AttributeError:'dict_keys'对象没有属性'index',您知道python 3.2的等价物是什么吗?再次感谢!我没有在我发布的代码中使用任何
dict\u键。你能用给出错误的代码编辑你的答案吗?我更新了我的答案,我想问题是我在for循环中将
index
用作局部变量,将
index
用作函数。我将
索引
变量替换为
I
。让我知道它是否有效。很抱歉,没有区别,仍然收到消息:
AttributeError:“dict_keys”对象没有属性“index”,指的是
index_to_replace=keys_replace.index(val)`。奇怪的是,
print keys_replace
它应该是一个列表
['engine','fields','incidint']
非常感谢您。这是唯一一行字典。也许它需要包含列表理解?@user2962024-erm。我不明白。这将遍历
d
中的每个
,并对该键的每个列表项执行
查找和替换
操作。你想建立一个新的
dict
而不是在适当的位置变异
d
吗?再次感谢你的时间。对不起,我把事情搞砸了,但现在我明白了。非常好的解决方案!我真的很感谢你!
for key in d:
    li = d[key]
    for i,item in enumerate(li):
        li[i] = d_find_and_replace.get(item, item)