3

好的,所以我想做类似的事情:

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

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

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

4

4 回答 4

2

根据其定义,您不能就地更新元组。它是不可变的。但是,您可以完全更换它。

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

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

于 2012-08-10T13:08:03.160 回答
0

有什么问题

listOfData[articleNumber] = (title, articleNumber, None, oldvariants + variants)
于 2012-08-10T13:07:45.583 回答
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中的错误

于 2012-08-10T15:10:40.580 回答
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]))
于 2012-08-13T09:52:27.183 回答