On Jun 18, 5:35 pm, [EMAIL PROTECTED] wrote: > On Jun 18, 12:32 pm, [EMAIL PROTECTED] wrote: > > > > > On Jun 18, 11:22 am, Robert Bossy <[EMAIL PROTECTED]> wrote: > > > > Hi, > > > > I wish to know how two dict objects are compared. By browsing the > > > archives I gathered that the number of items are first compared, but if > > > the two dict objects have the same number of items, then the comparison > > > algorithm was not mentioned. > > > > Note that I'm not trying to rely on this order. I'm building a > > > domain-specific language where there's a data structure similar to > > > python dict and I need an source of inspiration for implementing > > > comparisons. > > > > Thanks > > > RB > > > I'm a little confused as to what you want. Are you asking whether two > > dictionary objects have the same keys AND values, or just the Keys? > > > As dictionaries are unordered the best technique is to go through one > > dictionary and take out a key, then see if that key exists in the > > other dictionary, and if so do they share the same values. > > > # untested 2.5 > > for keys in dict_one.items(): > > if keys in dict_two: > > if dict_one[keys] != dict_two[keys]: > > # values are different > > else: > > # key is not present > > > This probably isn't the most efficient way, but can quickly find > > differences... > > Whoops > > for keys, values in dict_one.items(): > if keys in dict_two: > if values == dict_two[keys]: > > should also work...
Whoops, I think I misunderstood the question. If what you're asking whether two dictionary is equal (equality comparison, rather than sorting comparison). You could do something like this: a = [...] b = [...] s = set() for bk, bv in b.iteritems(): s.add((bk, bv)) for ak, av in a.iteritems(): if not((ak, av) in s): print 'Difference Found!' -- http://mail.python.org/mailman/listinfo/python-list