问题描述
lst={1:["O","O","O"],2:[1,2,3,4,5],3:["a","b","c","d"]}
for strings in lst[1]:
lst[1] = lst[1].replace("O","X")
print(lst[1])
此代码引发错误:“列表”对象没有属性“替换”。 请告诉我如何替换列表中的项目?
解决方法
您使用的数据结构不是list
,而是dictionary
,其中值是lists
。
要获得想要的东西,就必须这样做:
d = {1:["O","O","O"],2:[1,2,3,4,5],3:["a","b","c","d"]}
d[1] = [i.replace("O","X") for i in d[1]]
print(d)
{1: ['X','X','X'],2: [1,3: ['a','b','c','d']}
或者您可以遍历dictionary
项并检查list
是否包含所有字符串以及要替换的字符:
old = "O"
new = "X"
d = {1:["O","d"]}
for key,value in d.items():
if all(isinstance(item,str) for item in value) and old in value:
d[key] = [item.replace(old,new) for item in d[key]]
print(d)
输出:{1: ['X','d']}
您可以使用列表理解:
lst[1] = [x for x in lst[1] if x is not 'O' else 'X']
或者如果您知道要处理字符串列表,则可以执行以下操作:
csv = "".join(lst[1])
csv.replace('O','X')
lst[1] = csv.split('')