关于字典:检查两个大规模Python字典是否相等

Checking if Two Massive Python Dictionaries are Equivalent

我有一本超过9万条的Python字典。由于我不想进入的原因,我需要将这个字典存储在我的数据库中,然后在以后从数据库条目重新编译字典。

我正试图建立一个过程来验证我的存储和重新编译是否可靠,以及我的新字典是否与旧字典相同。测试这一点的最佳方法是什么?

有一些细微的差别,我想弄清楚它们是什么。


最明显的方法当然是:

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

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

更新:看起来你不是在追求"平等",而是更弱的东西。我认为你需要修改你的问题,让它明白你认为"等价"的意思。


你可以从这样的事情开始,并根据你的需要进行调整。

1
2
3
>>> 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())


1
2
3
4
5
6
>>> 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字典之间的快速比较,并添加一个upvote。这是一个非常完整的解决方案。