Thank you all for the advice, let me spin this in a different way. I've built a program that goes to the NANPA website, scrapes area code/exchange (npa/nxx) digits for a specified area - be it carolina, alabama, texas, etc - drops it into a file, then massages the data and prints out the correct format to insert into a voice router. The code is ugly, but it works great.
The thing I haven't been able to get my script to do is to reduce the amount of dial-peers. Hence the need to reduce the numbers to the least common denominator, and put it in the xxxxx[xx] format.If we had a set number of digits, we could build a dictionary(unless it's possible to do that dynamically). So, a couple assertions: 1. the data will always be 6 digit numbers (in a string format) 2. the data is in a txt file after being put there from my script 3. the data will never be the same (I'm going to use this for site conversions/new site builds e.g. today I might be dealing with 252-, 919- and 704- area codes, tomorrow might be 304- and 754- 4. I wanted a script to reduce the time taking to build the dial-peers manually. I'd previously spent 3-4 hours on gathering and processing data. The script I have so far pulls data and massages in about 6 seconds 5. I'm using python 2.7 - it seems like it had more module availability than 3 And a couple question: 1. Would lists be the best way to handle this data? Would it be better to process this data from a file? 2. Is there a way to determine the common (first-5 digits) denominator among a list (or file) of data? 3. and... Could those common numbers be inserted in a dict for processing? Sorry for the book! thanks Edward Ellerbee -----Original Message----- From: python-list-bounces+eellerbee=bbandt....@python.org [mailto:python-list-bounces+eellerbee=bbandt....@python.org] On Behalf Of MRAB Sent: Wednesday, July 13, 2011 5:59 PM To: python-list@python.org Subject: Re: I don't know list, I not good at list. > I've been beating my head against the desk trying to figure out a > method to accomplish this: > > Take a list (this example is 5 items, It could be 150 or more - i.e. > it's variable length depending on the city/local calling zones) > > The first 6 digits of phone numbers(NPA/NXX) in a local calling area. > I want to concatenate the last digit for insertion into a call > routing pattern. > > I tried this and failed miserably: > > list1=['252205','252246','252206','252247','252248'] > for item in list1: > try: > item1=list1[0] > item2=list1[1] > if item1[0:5] == item2[0:5]: > print item1[0:5] + '[' + item1[5:6] + item2[5:6] + ']' > list1.pop(0) > else: > print item1 > list1.pop(0) > except: > try: > print item1 > list1.pop(0) > except: > pass > > #----------------------------------------------------------------- > My intent is to have the end data come out (from the example list > above) in the format of > 25220[56] > 25224[678] > > I tried putting together a variable inserted into a regular > expression, and it doesn't seem to like: > Item1=list1[0] > Itemreg = re.compile(Item1[0:5]) > For stuff in itemreg.list1: > #do something > > Can somebody throw me a bone, code example or module to read on > python.org? I'm a n00b, so I'm still trying to understand functions > and classes. > > I thought the experts on this list might take pity on my pathetic > code skillz! > defaultdict comes in handy: >>> list1 = ['252205','252246','252206','252247','252248'] >>> from collections import defaultdict >>> d = defaultdict(set) >>> for item in list1: d[item[ : 5]].add(item[5 : ]) >>> d defaultdict(<class 'set'>, {'25224': {'8', '7', '6'}, '25220': {'5', '6'}}) >>> for k, v in d.items(): print(k + "[" + "".join(v) + "]") 25224[876] 25220[56] -- http://mail.python.org/mailman/listinfo/python-list -- http://mail.python.org/mailman/listinfo/python-list