Kind of a fun but confusing problem...
I have two lists. Each list contains elements of twoelement lists.
l1 = [['c1',1],['c2',2],['c3',4]]
l2 = [['c1',1],['c2',2],['c4',4],['c3',3]]
Exactly in this format, where
superlist[0][0] is always a string
superlist[0][1] is always an integer
Now what I would like to do is find the intersect of those two
superlists based on superlist[0][0] and then compare the integers to
find ultimately:
A list of strings of the intersect of l1/l2, where the l1[x][1] >
l2[x][1]
In the case of the above example, that would be simply:
['c3']
But since lists are unhashable, I can't make a set consisting of
lists... Maybe I am making this problem too difficult by thinking in
terms of sets. Does anyone have a simple solution????
Thanks 4 3223
Em Sex, 20060414 Ã*s 15:43 0700, flamesrock escreveu: Does anyone have a simple solution????
$ python2.4
Python 2.4.3 (#2, Mar 30 2006, 21:52:26)
[GCC 4.0.3 (Debian 4.0.31)] on linux2
Type "help", "copyright", "credits" or "license" for more information. l1 = [['c1',1],['c2',2],['c3',4]] l2 = [['c1',1],['c2',2],['c4',4],['c3',3]] print [tuple(x) for x in l1]
[('c1', 1), ('c2', 2), ('c3', 4)] print [tuple(x) for x in l2]
[('c1', 1), ('c2', 2), ('c4', 4), ('c3', 3)] s1 = frozenset(tuple(x) for x in l1) s2 = frozenset(tuple(x) for x in l2) print s1
frozenset([('c2', 2), ('c1', 1), ('c3', 4)]) print s2
frozenset([('c2', 2), ('c4', 4), ('c3', 3), ('c1', 1)]) print s2s1
frozenset([('c4', 4), ('c3', 3)]) print[list(x) for x in s2s1]
[['c4', 4], ['c3', 3]]

Felipe.
flamesrock wrote: Kind of a fun but confusing problem...
I have two lists. Each list contains elements of twoelement lists. l1 = [['c1',1],['c2',2],['c3',4]] l2 = [['c1',1],['c2',2],['c4',4],['c3',3]]
Exactly in this format, where superlist[0][0] is always a string superlist[0][1] is always an integer
Now what I would like to do is find the intersect of those two superlists based on superlist[0][0] and then compare the integers to find ultimately: A list of strings of the intersect of l1/l2, where the l1[x][1] > l2[x][1] In the case of the above example, that would be simply: ['c3']
In [5]: l1 = [['c1',1],['c2',2],['c3',4]]
In [6]: l2 = [['c1',1],['c2',2],['c4',4],['c3',3]]
In [7]: d=dict(l1)
In [10]: [k for k,v in l2 if k in d and v < d[k]]
Out[10]: ['c3']
Kent
wowowow now THAT is what I call simple!
Kent Johnson wrote: flamesrock wrote: Kind of a fun but confusing problem...
I have two lists. Each list contains elements of twoelement lists. l1 = [['c1',1],['c2',2],['c3',4]] l2 = [['c1',1],['c2',2],['c4',4],['c3',3]]
Exactly in this format, where superlist[0][0] is always a string superlist[0][1] is always an integer
Now what I would like to do is find the intersect of those two superlists based on superlist[0][0] and then compare the integers to find ultimately: A list of strings of the intersect of l1/l2, where the l1[x][1] > l2[x][1] In the case of the above example, that would be simply: ['c3']
In [5]: l1 = [['c1',1],['c2',2],['c3',4]]
In [6]: l2 = [['c1',1],['c2',2],['c4',4],['c3',3]]
In [7]: d=dict(l1)
In [10]: [k for k,v in l2 if k in d and v < d[k]] Out[10]: ['c3']
Kent
The dict solution posted above is definitely better than the following,
but purely out of idle curiosity I was interested to see if this could
be done in one line using just list comprehensions ...
Python 2.4.2 (#1, Nov 15 2005, 15:54:06)
[GCC 3.3.6 (Gentoo 3.3.6, ssp3.3.61.0, pie8.7.8)] on linux2
Type "help", "copyright", "credits" or "license" for more information. l1 = [['c1',1],['c2',2],['c3',4]] l2 = [['c1',1],['c2',2],['c4',4],['c3',3]] [k2 for [k2,v2] in l2 if k2 in [k1 for k1,v1 in l1] and v2 < [v1
for k1,v1 in l1 if k1 == k2][0]]
['c3']
.... yup :)
Dave.
 This discussion thread is closed Replies have been disabled for this discussion. Similar topics
6 posts
views
Thread by Edd Dawson 
last post: by

4 posts
views
Thread by comp.lang.tcl 
last post: by

2 posts
views
Thread by jkflens 
last post: by

8 posts
views
Thread by Blaine Manyluk 
last post: by
 
7 posts
views
Thread by abs 
last post: by

6 posts
views
Thread by per9000 
last post: by

6 posts
views
Thread by Murray Hopkins 
last post: by

4 posts
views
Thread by John Brock 
last post: by
          