5

次のような辞書があります。

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組み込み関数を使用しており、辞書には使用できないため、機能しません。これを行う方法に関する提案はありますか?助けてくれてありがとう。

スペルミスを修正するために編集されました。

4

2 に答える 2

5

直接割り当てを使用してみてください:

for key in d:
    li = d[key]
    for i,item in enumerate(li):
        li[i] = d_find_and_replace.get(item, item)
于 2013-11-13T18:36:00.180 に答える
-1

ここに解決策があります。乱雑だった辞書も修正しました。これらの指定されたキーを使用すると、置き換えられる一致は1つだけになると思われるため、スペルを確認してください。たとえば、小文字または大文字を一致させたくない場合を除き、engine一致することはありません。その場合は、使用できますenGineif 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
于 2013-11-13T18:35:20.630 に答える