我從來沒有想到我會遇到python的速度問題,但我有。我試圖根據字典值來比較真正的大字典列表。我比較兩個列表,第一個像這樣比較龐大的python字典列表
biglist1=[{'transaction':'somevalue', 'id':'somevalue', 'date':'somevalue' ...}, {'transactio':'somevalue', 'id':'somevalue', 'date':'somevalue' ...}, ...]
隨着「someValue中」長期爲用戶生成的字符串,整數或小數點。現在,第二個列表非常相似,除了id值始終爲空,因爲它們尚未分配。
biglist2=[{'transaction':'somevalue', 'id':'', 'date':'somevalue' ...}, {'transactio':'somevalue', 'id':'', 'date':'somevalue' ...}, ...]
所以我想在biglist2匹配字典中biglist1所有其他鍵除了 ID的詞典列表。
我一直在做
for item in biglist2:
for transaction in biglist1:
if item['transaction'] == transaction['transaction']:
list_transactionnamematches.append(transaction)
for item in biglist2:
for transaction in list_transactionnamematches:
if item['date'] == transaction['date']:
list_transactionnamematches.append(transaction)
...等等,而不是比較ID值,直到我獲得比賽的最終名單。由於列表可能非常大(每個列表大約有3000+項),因此Python需要一段時間來循環。
我猜這不是真的如何進行這種比較。有任何想法嗎?
「如果a中b:」是一個搜索操作,它不是一個固定的時間。實際上,假設元組搜索是線性的,這仍然是O(m * n)。 – codelogic 2008-12-20 01:49:36