On 8/4/2009 2:46 PM, Ann wrote:
On Aug 4, 11:31 am, Marcus Wanner <marc...@cox.net> wrote:
On Aug 4, 2:15 pm, Jay Bird <jay.bird0...@gmail.com> wrote:



Hi everyone,
I've been trying to figure out a simple algorithm on how to combine a
list of parts that have 1D locations that overlap into a non-
overlapping list.  For example, here would be my input:
part name   location
a                  5-9
b                  7-10
c                  3-6
d                  15-20
e                  18-23
And here is what I need for an output:
part name   location
c.a.b            3-10
d.e               15-23
I've tried various methods, which all fail.  Does anyone have an idea
how to do this?
Thank you very much!
Jay
Just take all the values, put them in a list, and use min() and max().
For example:

import string

def makelist(values):
    values = string.replace(values, ' ', '')
    listofvaluepairs = string.split(values, ',')
    listofvalues = []
    for pair in listofvaluepairs:
        twovalues = string.split(pair, '-')
        listofvalues.append(int(twovalues[0]))
        listofvalues.append(int(twovalues[1]))
    return listofvalues

values = '5-9, 7-10, 3-6'
values = makelist(values)
print('Values: %d-%d' %(min(values), max(values)) )

Marcus

Thank you for your help, this is a very nice program but it does not
address the issue that I have values that do not overlap, for example
'c' and 'd' do not overlap in the above example and thus I would not
want to output 3-20 but the individual positions instead.  In
addition, my inputs are not ordered from smallest to largest, thus I
could have a situation where a=5-9, b=15-20, c=7-10, etc., and I would
still want an output of: a.c = 5-10, b=15-20.  I apologize for the
complication.

Thank you again!

Jay
That would be a bit more complicated...you might try using tuples of values in a list, or writing your own class for the data handling. Unfortunately that's not something I can just sit down and code in 5 minutes, it would take some careful thought and planning.

Marcus

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to