+-
在Python中查找并替换(可能)嵌套列表中的元素?
我有一个他们可能或可能不会被任意嵌套的项目列表.我想替换其中一个列表的元素.无论哪种方式(嵌套或不嵌套),我都将元素的索引位置存储在另一个列表中.

这是一个嵌套列表示例,我想用其他东西替换’xyz’,比如说123.我在loc中存储了’xyz’的位置:

find='xyz'
replace=123
nested=[['abc',1],['xyz',2]] 
print(loc) # [1,0]

使用loc如何用’xyz’代替123?

这是一个unnested示例,我想做同样的替换:

unnested=['abc','xyz']
print(loc) # [1]

如果loc只有一个元素,那么你可以简单地做:

*nest,element=loc
if not nest: 
    unnested[element]=replace
else: pass # need help with this part

有足够的灵活性来处理这两种情况吗?

最佳答案
这和其他答案一样,只是以功能方式走这条路:

reduce(getitem, loc[:-1], nested)[loc[-1]] = replace

在Python 3中,您需要从functools导入reduce. getitem来自操作符模块.如果您只有列表,则可以使用list .__ getitem__.

说明:reduce以嵌套开头,并用locitem(thecurrentvalue,i)替换为loc [: – 1]中的每个值i.因此,例如,如果loc是[2,4,1,3],那么你得到getitem(getitem(getitem(嵌套,2),4),1).这与嵌套[2] [4] [1]相同.

点击查看更多相关文章

转载注明原文:在Python中查找并替换(可能)嵌套列表中的元素? - 乐贴网