我有一个包含超过90,000个条目的庞大python字典。由于我不打算进入的原因,我需要将此字典存储在我的数据库中,然后在稍后的数据库条目中重新编译字典。
我正在尝试设置一个过程来验证我的存储和重新编译是否忠实,并且我的新词典与旧词典相同。测试这个的最佳方法是什么。
存在细微差别,我想弄清楚它们是什么。
答案 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。这是一个非常完整的解决方案。