Lining Up and PaddingTwo Similar Lists

Paul Rubin http
Fri Aug 29 08:42:29 CEST 2008

"W. eWatson" <notvalid2 at> writes:
> [a.dat, c.dat, g.dat, k.dat, p.dat]
> [a.txt, b.txt, g.txt, k.txt r.txt, w.txt]
> What I need is to pair up items with the same prefix and use "None",
> or some marker, to indicate the absence of the opposite item. 

This is functionally influenced but should be straightforward:

    dat = ['a.dat', 'c.dat', 'g.dat', 'k.dat', 'p.dat']
    txt = ['a.txt', 'b.txt', 'g.txt', 'k.txt', 'r.txt', 'w.txt']

    # just get the portion of the filename before the first period
    def prefix(filename):
        return filename[:filename.find('.')]

    # make a dictionary mapping prefixes to filenames
    def make_dict(plist):
        return dict((prefix(a),a) for a in plist)

    pdat = make_dict(dat)
    ptxt = make_dict(txt)

    # get a list of all the prefixes, use "set" to remove
    # duplicates, then sort the result and look up each prefix.
    for p in sorted(set(pdat.keys() + ptxt.keys())):
        print pdat.get(p), ptxt.get(p)

More information about the Python-list mailing list