我正在python3中开发一个程序,需要迭代一个字典列表,并将特定字符' - '的所有出现替换为'_'。理想情况下,我只需要在字典键中替换' - '的实例,但我可以管理
数据采用以下格式:
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')]
}
]
我尝试将其替换为以下字符串:
d.replace('-','_')
但是这给了错误:
AttributeError: 'list' object has no attribute 'replace'
然后我想我会迭代列表和字典项目来尝试替换:
for i in range(len(dicts)):
for x in dicts[i].items():
dicts[i].items.replace('-','_')
给了我
AttributeError: 'builtin_function_or_method' object has no attribute 'replace'
所以现在我正在尝试
def t(dicts):
for i in range(len(dicts)):
for key in dicts[i].items():
dicts[i].items()[key.replace('-','_')] = (dicts[i].items()).pop(key)
然而,这给出了错误:
AttributeError: 'dict_items' object has no attribute 'pop'
有人知道怎么做吗?如果这是我做错了什么,那么正确的方法是什么?
答案 0 :(得分:0)
首先,
for i in range(len(dicts)):
for x in dicts[i].items():
dicts[i].items.replace('-','_')
你得到例外,因为你试图在“items”函数中找到一个方法“replace”而不是调用函数。它应该是:
dicts[i].items().replace('-','_')
其次,对我而言,这是错误的做法。 既然你正在使用python,为什么不以pythonic的方式去做,只返回一个有新值的新dict的新列表?
下面提供的函数列出了元组列表的序列(它是您提供的结构),并将每个“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, '-', '_')
这是你的意思吗?