有什么方法可以替换python 3中列表中的项目吗?

问题描述

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('')

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...