检查两个巨大的 Python 字典是否相等

8 投票
3 回答
18527 浏览
提问于 2025-04-17 03:26

我有一个非常大的Python字典,里面有超过90,000条记录。由于一些原因,我需要把这个字典存储到我的数据库中,然后在之后的某个时候从数据库中重新编译这个字典。

我正在尝试建立一个流程来验证我的存储和重新编译是否准确,并且确保我新的字典和旧的字典是一样的。有什么好的方法可以用来测试这个呢?

我发现有一些小的差异,我想弄清楚它们是什么。

3 个回答

2

你可以先从这样的代码开始,然后根据自己的需要进行调整。

>>> bigd = dict([(x, random.randint(0, 1024)) for x in xrange(90000)])
>>> bigd2 = dict([(x, random.randint(0, 1024)) for x in xrange(90000)])
>>> dif = set(bigd.items()) - set(bigd2.items())
2
>>> d1 = {'a':1,'b':2,'c':3}
>>> d2 = {'b':2,'x':2,'a':5}
>>> set(d1.iteritems()) - set(d2.iteritems()) # items in d1 not in d2
set([('a', 1), ('c', 3)])
>>> set(d2.iteritems()) - set(d1.iteritems()) # items in d2 not in d1
set([('x', 2), ('a', 5)])

编辑
不要给这个答案投票。请去 快速比较两个Python字典,并给它点赞。那是一个非常完整的解决方案。

13

最简单的方法当然是:

if oldDict != newDict:
  print "**Failure to rebuild, new dictionary is different from the old"

这个方法应该是最快的,因为它依赖于Python内部的机制来进行比较。

更新:看起来你并不是在寻找“相等”,而是想要一些更宽松的条件。我觉得你需要修改一下你的问题,让大家更清楚你所说的“等价”是什么意思。

撰写回答