Python:在元组列表中更改元组

时间:2017-06-26 00:57:03

标签: python list tuples

我正在尝试替换元组列表中的元组中的值。

recordlist = [(sku,item,bro),(sku1,item1,bro1),...]

for item in recordlist:
    itemlist = list(item)
    if itemlist[0] == 'sku':
        itemlist[1] = itemlist[1]+',item'
        item = tuple(itemlist)

        print(item)

此代码目前无效。有人可以帮忙吗? 当前输出显示

('sku','item','bro')

预期输出为:

('sku','item,item','bro')

2 个答案:

答案 0 :(得分:1)

我认为将更新的tuple分配给list中的相应索引将解决问题,因为tuples是不可变的。在迭代列表时可以使用相应的索引enumerate。您可以尝试以下操作:

recordlist = [('sku1','item1','bro1'),('sku2','item2','bro2')]

for index, item in enumerate(recordlist):
    itemlist = list(item)
    if itemlist[0] == 'sku1':
        itemlist[1] = itemlist[1]+','+'item'
    item = tuple(itemlist)

    recordlist[index] = item

print(recordlist)

输出:

[('sku1', 'item1,item', 'bro1'), ('sku2', 'item2', 'bro2')]

答案 1 :(得分:0)

当您想要使用可修改的元素时,列表是有用的数据结构。元组是不可变的。当前代码对于大量数据可能效率低下,因为您经常将元组转换为列表,修改元素并返回元组。以下代码执行相同但适用于列表。

recordlist = [['sku','item','bro'],['sku1','item1','bro1']]

for itemlist in recordlist:
    if itemlist[0] == 'sku':
        itemlist[1] = itemlist[1]+',item'
        print(tuple(itemlist))