【问题标题】:Python: Change tuple in a list of tuplesPython:更改元组列表中的元组
【发布时间】:2017-06-26 00:57:03
【问题描述】:

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

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')

【问题讨论】:

  • 请解释不工作是什么意思。您对应该发生的事情的期望是什么,目前正在发生什么?
  • 好的。让我编辑
  • 请立即查看

标签: python list tuples


【解决方案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')]

【讨论】:

  • 这个显示如下错误信息:ValueError: too many values to unpack (expected 2)
  • 我的列表包含 5449 项
  • @Santosh 错误信息是什么?您能否详细说明哪一行以及消息是什么?
  • 77 其他:---> 78 for index, item in recordlist: 79 itemlist = list(item) 80 if itemlist[0] == sku: ValueError: too many values to unpack (expected 2)
  • 谢谢兄弟。我错过了。
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-09
    • 2013-04-26
    相关资源
    最近更新 更多