
notvalid2 at sbcglobal
Aug 28, 2008, 10:29 PM
Post #3 of 9
(67 views)
Permalink
|
|
Re: Lining Up and PaddingTwo Similar Lists
[In reply to]
|
|
castironpi wrote: > On Aug 28, 10:50 pm, "W. eWatson" <notval...@sbcglobal.net> wrote: >> Maybe there's some function like zip or map that does this. If not, it's >> probably fairly easy to do with push and pop. I'm just checking to see if >> there's not some known simple single function that does what I want. Here's >> what I'm trying to do. >> >> I have a list dat like (assume the items are strings even thought I'm >> omitting quotes.): >> [a.dat, c.dat, g.dat, k.dat, p.dat] >> >> I have another list called txt that looks like: >> [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. That is, in non-list >> form, I want: >> a.dat a.txt >> None b.txt >> c.dat None >> g.dat g.txt >> k.dat k.txt >> p.dat None >> None r.txt >> None w.txt >> >> Ultimately, what I'm doing is to find the missing member of pairs. >> -- >> Wayne Watson (Watson Adventures, Prop., Nevada City, CA) >> >> (121.015 Deg. W, 39.262 Deg. N) GMT-8 hr std. time) >> Obz Site: 39° 15' 7" N, 121° 2' 32" W, 2700 feet >> >> Web Page: <www.speckledwithstars.net/> > > This gets you your list. What do you mean by 'missing member of (a.dat, a.txt) is a pair. (None, a.txt) has a.dat missing. I just need to issue a msg to the user that one member of a file pair is missing. Both files need to be present to make sense of the data. > pairs'? If you mean, 'set of elements that appear in both' or 'set > that appears in one but not both', you can short circuit it at line > 14. > > -warning, spoiler- It looks like you went beyond the call of duty, but that's fine. It looks like I have a few new features to learn about in Python. In particular, dictionaries. Thanks. Actually, the file names are probably in order as I pick them up in XP. I would think if someone had sorted the folder, that as one reads the folder they are in alpha order, low to high. > > dat= ['a.dat', 'c.dat', 'g.dat', 'k.dat', 'p.dat'] > dat.sort() > txt= ['a.txt', 'b.txt', 'g.txt', 'k.txt', 'r.txt', 'w.txt'] > txt.sort() > import os.path > datD= {} > for d in dat: > r,_= os.path.splitext( d ) > datD[ r ]= d > txtD= {} > for d in txt: > r,_= os.path.splitext( d ) > txtD[ r ]= d > both= sorted( list( set( datD.keys() )| set( txtD.keys() ) ) ) > > print datD > print txtD > print both > > for i, x in enumerate( both ): > both[ i ]= datD.get( x, None ), txtD.get( x, None ) > > print both > > OUTPUT: > > {'a': 'a.dat', 'p': 'p.dat', 'c': 'c.dat', 'k': 'k.dat', 'g': 'g.dat'} > {'a': 'a.txt', 'b': 'b.txt', 'g': 'g.txt', 'k': 'k.txt', 'r': 'r.txt', > 'w': 'w.t > xt'} > ['a', 'b', 'c', 'g', 'k', 'p', 'r', 'w'] > [.('a.dat', 'a.txt'), (None, 'b.txt'), ('c.dat', None), ('g.dat', > 'g.txt'), ('k.d > at', 'k.txt'), ('p.dat', None), (None, 'r.txt'), (None, 'w.txt')] -- W. Watson (121.015 Deg. W, 39.262 Deg. N) GMT-8 hr std. time) Obz Site: 39° 15' 7" N, 121° 2' 32" W, 2700 feet -- http://mail.python.org/mailman/listinfo/python-list
|