Path: csiph.com!usenet.pasdenom.info!gegeweb.org!de-l.enfer-du-nord.net!feeder1.enfer-du-nord.net!cs.uu.nl!news.stack.nl!newsfeed.xs4all.nl!newsfeed1.news.xs4all.nl!xs4all!post.news.xs4all.nl!not-for-mail Return-Path: X-Original-To: python-list@python.org Delivered-To: python-list@mail.python.org X-Spam-Status: OK 0.003 X-Spam-Evidence: '*H*': 0.99; '*S*': 0.00; 'that?': 0.05; 'element': 0.07; 'indexing': 0.07; 'subject:file': 0.07; 'parsing': 0.09; 'skip:% 20': 0.09; 'to:addr:comp.lang.python': 0.09; 'cc:addr :python-list': 0.11; 'ah,': 0.16; 'problem!': 0.16; 'subject:.txt': 0.16; 'temp': 0.16; 'there?': 0.16; 'tuple': 0.16; 'wrote:': 0.18; 'year,': 0.18; 'things.': 0.19; 'value.': 0.19; 'code,': 0.22; 'cc:addr:python.org': 0.22; 'print': 0.22; 'header :User-Agent:1': 0.23; '31,': 0.24; 'entries': 0.24; 'recognize': 0.24; 'subject: .': 0.24; 'mon,': 0.24; 'question': 0.24; 'cc:2**0': 0.24; 'cc:no real name:2**0': 0.24; 'second': 0.26; 'values': 0.27; 'header:In-Reply-To:1': 0.27; 'chris': 0.29; 'am,': 0.29; 'list:': 0.30; 'statement': 0.30; 'code': 0.31; 'names.': 0.31; 'file': 0.32; 'text': 0.33; 'skip:d 20': 0.34; 'subject:from': 0.34; 'could': 0.34; 'problem': 0.35; 'something': 0.35; 'but': 0.35; 'received:google.com': 0.35; 'there': 0.35; 'manufacturer': 0.36; 'should': 0.36; 'so,': 0.37; 'list': 0.37; 'being': 0.38; 'skip:o 20': 0.38; 'thank': 0.38; 'handle': 0.38; 'either': 0.39; 'skip:p 20': 0.39; 'how': 0.40; 'march': 0.61; 'here': 0.66; 'side': 0.67; 'containing': 0.69; 'car': 0.72; 'guaranteed': 0.75; "'with'": 0.84; '2013': 0.98 X-Received: by 10.49.5.129 with SMTP id s1mr592971qes.39.1364750397596; Sun, 31 Mar 2013 10:19:57 -0700 (PDT) Newsgroups: comp.lang.python Date: Sun, 31 Mar 2013 10:19:57 -0700 (PDT) In-Reply-To: Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=99.9.126.19; posting-account=bb1tZgkAAABmwkKlzWV6XDrCLEIC9th2 References: User-Agent: G2/1.0 X-Google-Web-Client: true X-Google-IP: 99.9.126.19 MIME-Version: 1.0 Subject: Re: Creating a dictionary from a .txt file From: "C.T." To: comp.lang.python@googlegroups.com Content-Type: text/plain; charset=ISO-8859-1 Cc: python-list@python.org X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: General discussion list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Message-ID: Lines: 70 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1364750406 news.xs4all.nl 6948 [2001:888:2000:d::a6]:46421 X-Complaints-To: abuse@xs4all.nl Xref: csiph.com comp.lang.python:42384 On Sunday, March 31, 2013 12:06:18 PM UTC-4, Chris Angelico wrote: > On Mon, Apr 1, 2013 at 2:52 AM, C.T. > > > After playing around with the code, I came up with the following code to get everything into a list: > > > > > > d=[] > > > car_file = open('worstcars.txt', 'r') > > > for line in car_file: > > > d.append(line.strip('\n')) > > > print (d) > > > car_file.close() > > > > > > Every line is now an element in list d. The question I have now is how can I make a dictionary out of the list d with the car manufacturer as the key and a tuple containing the year and the model should be the key's value. > > > > Ah, a nice straight-forward text parsing problem! > > > > The question is how to recognize the manufacturer. Is it guaranteed to > > be the second blank-delimited word, with the year being the first? If > > so, you were almost there with .split(). > > > > car_file = open('worstcars.txt', 'r') > > # You may want to consider the 'with' statement here - no need to close() > > for line in car_file: > > temp = line.split(None, 2) > > if len(temp)==3: > > year, mfg, model = temp > > # Now do something with these three values > > print("Manufacturer: %s Year: %s Model: %s"%(mfg,year,model)) > > > > That's sorted out the parsing side of things. Do you know how to build > > up the dictionary from there? > > > > What happens if there are multiple entries in the file for the same > > manufacturer? Do you need to handle that? > > > > ChrisA Thank you, Chris! I could use slicing and indexing to build the dictionary but the problem is with the car manufacturer an the car model. Either or both could be multiple names.