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)