castironpi wrote:
On Aug 28, 10:50 pm, "W. eWatson" <[EMAIL PROTECTED]> 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