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 -- http://mail.python.org/mailman/listinfo/python-list