繁体   English   中英

Python:修改列表中的元组

[英]Python: Modify tuple in list

我的实际输出如下所示:

target = [([('Kid', '200-5'), (u'Rock', '200-6')], u's725')]

如何修改元组中的数据,以便最后返回与目标格式相同的已修改列表?

例如:我想将“成人”中的“孩子”更改为其余部分,例如,我收到:newTarget = [([[('adult','200-5'),(u'Rock', '200-6')],u's725')]

我的想法:将目标的所有数据复制到一个临时列表中,进行修改并创建与目标相同的格式。

但是:我该如何具体实现? 到现在为止,我可以更改和修改内容,但是我没有再得到相同的格式...

你有尝试过吗?

l = list(target[0][0][0])
l[0] = 'Adult'
target[0][0][0] = tuple(l)

由于元组是不可变的,因此您无法修改其元素-必须用新的元组替换它们。 列表是可变的,因此您可以根据需要替换各个部分:

>>> x = [(1, 2), (3, 4), 5]
>>> x[0] = (x[0][0], 0)
>>> x
[(1, 0), (3, 4), 5]

在上面的示例中,我创建了一个列表x其中包含元组作为其第一和第二个元素,以及一个int作为其第三个元素。 在第二行中,我构造了一个新的元组以交换到x的第一个位置,其中包含旧元组的第一个元素,以及一个新的元素0来替换2

如果需要更灵活,则需要递归

target = [([('Kid', '200-5'), (u'Rock', '200-6')], u's725')]

def search_and_replace(inlist):
        res = []
        for t in inlist:
            if isinstance(t, list):
                res.append(search_and_replace(t))
            elif isinstance(t, tuple):
                t1, t2 = t 
                if t1 == 'Kid':
                    t1 = 'adult'
                elif isinstance(t1, list):
                    t1 = search_and_replace(t1)
                res.append((t1, t2)) 
            else:
                res.append(t)

        return  res 


print search_and_replace(target) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM