Peter Otten wrote:
Robert Bossy wrote:

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.

If I interpret the comments in
http://svn.python.org/view/python/trunk/Objects/dictobject.c?rev=64048&view=markup

correctly it's roughly

def characterize(d, e):
    return min(((k, v) for k, v in d.iteritems() if k not in e or e[k] != v),
               key=lambda (k, v): k)

def dict_compare(d, e):
    result = cmp(len(d), len(e))
    if result:
        return result
    try:
        ka, va = characterize(d, e)
    except ValueError:
        return 0
    kb, vb = characterize(e, d)
    return cmp(ka, kb) or cmp(va, vb)
Thanks, Peter! That was exactly what I was looking for. Quite clever, I might add.

RB
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to