Во-первых,
for i in range(len(dicts)):
for x in dicts[i].items():
dicts[i].items.replace('-','_')
вы получаете исключение, потому что вы пытаетесь найти метод "replace" в функции "items", а не вызов функции .должно быть:
dicts[i].items().replace('-','_')
Во-вторых, для меня это неправильный подход.Поскольку вы используете python, почему бы не сделать это питонским способом и просто вернуть новый список новых dicts, которые имеют новые значения?
Функция, представленная ниже, берет список подсказок списков кортежей (это структура, которую вы предоставили) и заменяет каждый «to_change» на «change_to».Я называю это, используя ваши требования, чтобы поменять каждое '-' на '_'.
d=[
{
'title': [('Agente 007, Moonraker: Operazione spazio', 'it')],
'sub-title': [('Missione nel cosmo per...', 'it')],
},{
'title': [('Agente 007, Vivi e lascia morire', 'it')],
'sub-title': [('Il primo James Bond con...', 'it')]
}
]
def sub_string(dict_list, to_change, change_to):
new_list = []
for d_orig in dict_list:
d_new = {}
for key in d_orig.keys():
new_key = key.replace(to_change, change_to)
new_value = [[s.replace(to_change, change_to) for s in tup] for tup in d_orig[key]]
d_new[new_key] = new_value
new_list.append(d_new)
return new_list
sub_string(d, '-', '_')
Это то, что вы имели в виду?