gpt4 book ai didi

python - 如何递归替换元组对列表?

转载 作者:太空宇宙 更新时间:2023-11-03 17:46:21 26 4
gpt4 key购买 nike

我在编写要执行的函数时遇到了一些麻烦:

[(232, [230, 231]), (148, [144, 145, 147, 232]), (231, [214, 215])]

[[148, [144, 145, 147, [232, [230, [231, [214, 215]]]]]]]

每个元组中的第一个元素是相应列表元素中元素的父元素。 148 是根(该值存储在其他地方的变量中),从根开始,我需要用相应的列表替换 232,然后在刚刚替换 232 的列表中替换 231。

它需要是一个通用的递归解决方案,因为我最终可能会遇到更复杂的情况,例如:

[(227, [187, 188, 190, 192, 242]), (240, [238, 239, 305]), (305, [307, 308, 309]), (242, [256, 257, 258]), (247, [227, 245, 246]), (248, [247]), (188, [189, 191]), (190, [233, 234, 240])]

其中 248 是根。

或者,如果有更好的方法来构建一般数据,换句话说,如果我正在做的事情很愚蠢,我愿意接受建议。

最佳答案

如果您使用字典,这样的事情应该可以工作:

original = {232: [230, 231], 148: [144, 145, 147, 232], 231: [214, 215]}

def expand(data, number, dest):
if data.get(number):
res = []

for n in data.get(number):
expand(data, n, res)

dest.append([number, res])
else:
dest.append(number)

return dest

print expand(original, 148, [])
[[148, [144, 145, 147, [232, [230, [231, [214, 215]]]]]]]

关于python - 如何递归替换元组对列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29760118/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com