python - 在 Python 中查找并替换(可能)嵌套列表中的元素?

标签 python replace

我有一个项目列表,它们可能会也可能不会被任意嵌套。我想替换列表中的一个元素。无论哪种方式(嵌套与否),我都将元素的索引位置存储在另一个列表中。

这是一个嵌套列表示例,我想用其他内容替换 'xyz',比如 123。我将 'xyz' 的位置存储在 loc 中:

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

如何使用 loc'xyz' 替换为 123

这是一个未嵌套的示例,我想在其中进行相同的替换:

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 中你需要导入 reduce来自 functools。和 getitem来自 operator 模块。如果您只有列表,则可以改用 list.__getitem__

说明:reducenested 开始,并用getitem(thecurrentvalue, i) 替换每个值iloc[:-1] 中。例如,如果 loc[2, 4, 1, 3] 那么你会得到 getitem(getitem(getitem(nested, 2), 4), 1 )。这与 nested[2][4][1] 相同。

关于python - 在 Python 中查找并替换(可能)嵌套列表中的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40245389/

相关文章:

python - PyQt5 端口 : how do I hide a window and let it appear at the same position

python - wxPython 列表控件 : write Colored text

javascript - 鼠标悬停时替换包含的元素文本

javascript - 用特殊字符替换子字符串

javascript - 我应该使用哪种方法从文本中提取指定的数据?

python - Pygame 通过单击循环浏览图像

Python - SQLAlchemy 获取 'Table' 对象不可调用错误

python - 创建 `n` 子串的详尽列表

C# Regex - 匹配不以特定单词开头的表达式

javascript - 在输入类型的文本中,为什么我无法添加 - 在键入四个字母后使用 javascript?