我是一個初學者。我寫了一個腳本,輸入1000萬個條目的輸入列表(形式爲:b,其中a和b是字母數字)。Python腳本創建字典時,爲每個字典的鍵,有多個值(300條目)列表
現在我想從這些條目創建一本詞典。對於很多列表條目,第二部分(在冒號後面)是常見的。 (例如a:b,f:b,k:b - 在這種情況下,我的密鑰將是b,值將是列表[a,f,k])。
但不知怎的我的腳本被擊中。我可以從日誌中看到腳本被觸發並且日誌大小沒有增加。 (對於我的字典中的每個鍵,都有一個大小在400到500之間的列表。這可能是一個問題嗎?)
如果我的輸入列表包含較少的項目,我的腳本正常工作。
名單的名字是比賽
print 'match2 list: %s' % match2 # it shows the 10 million entries in form of a:b as expected
for i in xrange(len(match2)):
print 'Before Splitted variable : %s' % match2[i] # this print is for information
templist = re.split(':', '%s' % match2[i])
print 'Splitted list : %s' % templist # this print is for information
length3 = len(templist)
print "Length3 :%d" %length3
key1 = templist[1]
value1 = templist[0]
if example.has_key(key1):
example[key1].append(value1)
else:
example[key1] = value1
請給你的建議。
該代碼看起來不錯。 。 。有點醜陋和低效率,但罰款;)我會添加一些東西打印出來,並檢查它是否總是失敗在同一點 - 可能是您的輸入數據或一些周圍的邏輯問題。 – ernie 2012-08-09 18:03:43
它與你所問的問題無關,但我認爲're.split'在這裏是過度殺傷。你可以做'templist = match2 [i] .split(':',maxsplit = 1)',這樣可以保證'len(templist)== 2'的好處,因爲最多隻有一次分割。 – 2012-08-09 18:29:00
如果你知道你的列表項總是有一個':',並且執行'value1,key1 = match2 [i] .split(':',maxsplit = 1)',你甚至可以更進一步。 – 2012-08-09 18:30:12