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

时间:2011-09-30 14:29:40

标签: python dictionary transformation python-2.7

我有一个包含超过90,000个条目的庞大python字典。由于我不打算进入的原因,我需要将此字典存储在我的数据库中,然后在稍后的数据库条目中重新编译字典。

我正在尝试设置一个过程来验证我的存储和重新编译是否忠实,并且我的新词典与旧词典相同。测试这个的最佳方法是什么。

存在细微差别,我想弄清楚它们是什么。

3 个答案:

答案 0 :(得分:11)

最明显的方法当然是:

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

这应该是最快的,因为它依赖Python的内部进行比较。

更新:似乎你不是在“平等”之后,而是更弱的东西。我认为你需要编辑你的问题,以明确你认为“等同”的意思。

答案 1 :(得分: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 :(得分:1)

>>> 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)])

修改 不要投票给这个答案。转到Fast comparison between two Python dictionary并添加一个upvote。这是一个非常完整的解决方案。