efficient list merging

Mark McEahern marklists at mceahern.com
Wed Sep 4 10:48:34 EDT 2002


Question:  What if lol1 had ['g', 'f']?  Would that be considered the same
as ['f', 'g']?

Anyway, here's yet another approach:

#! /usr/bin/env python

lol1 = [['a'], ['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i', 'j']]
lol2 = [['d', 'e', 'f'], ['k', 'l', 'm'], ['d'], ['f', 'g'], ['a']]

def mergelists(*lists):
    d = {}
    for each_list in lists:
        for item in each_list:
            key = str(item)
            if key not in d:
                d[key] = item
    ret = d.values()
    ret.sort()
    return ret

mergelol = mergelists(lol1, lol2)

expected = [['a'], ['a', 'b', 'c'], ['d'], ['d', 'e', 'f'], ['f', 'g'],
            ['g', 'h', 'i', 'j'], ['k', 'l', 'm']]

assert mergelol == expected

// m

-





More information about the Python-list mailing list