更新列表中的元组

时间:2012-08-10 13:04:18

标签: python list tuples

好的,所以我想做点什么:

if title and articleNumber in listOfData:
    listOfData[articleNumber].update(title, articleNumber, None, oldvariants + variants)
else:
    listOfData.append((title, articleNumber, None, variants))

我意识到语法不正确,但由于我不知道自己想做什么,我将其描述为我想要使用的语法:)文章编号是一个大整数(我不知道)知道它是否可以从0开始

请注意,我不想使用字典,因为listOfData应该与代码的其他部分格式相同。 (这很不幸,因为我正在解析的文章在某些情况下分成几行,如果它已经在列表中,我需要进行此检查)

4 个答案:

答案 0 :(得分:2)

您无法根据其定义更新元组。它一成不变。但是你可以完全替换它。

if title and articleNumber in listOfData:
    listOfData[articleNumber] = (title, articleNumber, None, oldvariants + variants)
else:
    listOfData.append((title, articleNumber, None, variants))

update是一个添加条目的字典方法,这让我觉得你可能试图让一个条目包含多个元组的数据列表。如果是这种情况,您将需要一种不同的方法。

答案 1 :(得分:0)

有什么问题
listOfData[articleNumber] = (title, articleNumber, None, oldvariants + variants)

答案 2 :(得分:0)

我认为你的意思是

if title == listOfData[articleNumber][0]:
    oldvariants=lisOfData[articleNumber][3]
    listOfData[articleNumber]=(title, articleNumber, None, oldvariants + variants)
else:
    listOfData.append((title, articleNumber, None, variants))

修改

纠正if

中的错误

答案 3 :(得分:0)

我最后做的就像一个字典,键是一个元组(articleNumber,title)

if (articleNumber,title) in dictionaryContent:
     dictionaryContent[(articleNumber,title)] += variants
else:
     dictionaryContent[(articleNumber,title)] = variants

然后将其转换为列表:

for (articleNumber, title) in dictionaryContent.keys():
    listOfData.append((title, articleNumber, None, dictionaryContent[item]))