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。这是一个非常完整的解决方案。