【发布时间】:2008-12-19 22:49:15
【问题描述】:
我从没想过我会在使用 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 循环需要相当长的时间。
我猜这并不是真正应该进行这种比较的方式。有什么想法吗?
【问题讨论】:
标签: python