2012-08-10 33 views
2

好了,我想要做的事,如:更新的元組

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

我意識到語法是不正確的,但因爲我不知道我想做什麼,我將其形容爲我希望使用的語法:)文章編號是一個大整數(我不知道它是否可以從0開始)

請注意,我不想使用字典,因爲listOfData應該是與代碼的其他部分相同的格式。 (這是不幸的,因爲我解析的文章在某些情況下,這使我需要這個檢查它是否在列表中已經在多個行分)

回答

2

你不能根據其定義更新一個元組。它是不可改變的。但是,您可以完全替換它。

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

update是添加這讓我認爲你可能試圖在列表中的一個條目的數據由多於一個元組的條目的字典法。如果是這種情況,你需要一種不同的方法。

+0

Articlenumber的是超出範圍,我不認爲''如果標題和articleNumber在listOfData:''工作,因爲它看起來對單值標題和文章編號,而不是包含那些元組的 – 2012-08-10 13:56:00

+1

你是不是要在listOfData中做'if(title,articleNumber)? – 2012-08-10 14:41:30

0

這有什麼錯

listOfData[articleNumber] = (title, articleNumber, None, oldvariants + variants) 
+0

文章編號超出範圍 – 2012-08-10 13:54:07

0

我想你的意思

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

編輯

在糾正錯誤的,如果

+0

超出範圍,我也評論其他答案 – 2012-08-13 09:52:56

0

我最後做它喜歡用鑰匙作爲一個元組的字典(articleNumber,標題)

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

然後con它以用vert一個列表:

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