繁体   English   中英

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

[英]Checking if Two Massive Python Dictionaries are Equivalent

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

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

有微小的差异,我想弄清楚它们是什么。

最明显的方法当然是:

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

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

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

你可以从这样的事情开始并调整它以满足你的需求

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM