我的实际输出如下:
target = [([('Kid', '200-5'), (u'Rock', '200-6')], u's725')]
如何修改元组中的数据,以便最后返回与目标格式相同的修改后的列表?
例如:我想改变'成人'中的'孩子',这样剩下的就剩下了,即我收到:newTarget = [([('adult','200-5'),(u' Rock','200-6')],u's725')]
我的想法:将目标的所有数据复制到临时列表中,修改内容并创建与目标相同的格式。
但是我怎样才能具体实现这一目标? 到现在为止,我可以更改和修改内容,但我没有再次获得相同的格式...
答案 0 :(得分:4)
你试过这个吗?
l = list(target[0][0][0])
l[0] = 'Adult'
target[0][0][0] = tuple(l)
答案 1 :(得分:1)
由于元组是不可变的,你无法修改它们的元素 - 你必须用新的元组替换它们。列表是可变的,因此您可以根据需要替换单个部件:
>>> x = [(1, 2), (3, 4), 5]
>>> x[0] = (x[0][0], 0)
>>> x
[(1, 0), (3, 4), 5]
在上面的例子中,我创建了一个列表x
,其中包含元组作为第一个和第二个元素,int作为第三个元素。在第二行,我构造一个新的元组交换到x的第一个位置,包含旧元组的第一个元素,以及一个新元素0
来替换2
。
答案 2 :(得分:0)
如果您需要更灵活,则需要递归
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)