On Sunday, March 31, 2013 12:38:56 PM UTC-4, Roy Smith wrote: > In article <d15c39bc-5d2a-42c9-a76b-23768b61c...@googlegroups.com>, > > "C.T." wrote: > > > > > Hello, > > > > > > I'm currently working on a homework problem that requires me to create a > > > dictionary from a .txt file that contains some of the worst cars ever made. > > > The file looks something like this: > > > > > > 1958 MGA Twin Cam > > > 1958 Zunndapp Janus > > > 1961 Amphicar > > > 1961 Corvair > > > 1966 Peel Trident > > > 1970 AMC Gremlin > > > 1970 Triumph Stag > > > 1971 Chrysler Imperial LeBaron Two-Door Hardtop > > > > > > The car manufacturer should be the key and a tuple containing the year and > > > the model should be the key's value. I tried the following to just get the > > > contents of the file into a list, but only the very last line in the txt > > file > > > is shown as a list with three elements (ie, ['2004', 'Chevy', 'SSR']) when > > I > > > print temp. > > > > > > d={} > > > car_file = open('worstcars.txt', 'r') > > > for line in car_file: > > > temp = line.split() > > > print (temp) > > > car_file.close() > > > > Yup. Because you run through the whole file, putting each line into > > temp, overwriting the previous temp value. > > > > > d=[] > > > car_file = open('worstcars.txt', 'r') > > > for line in car_file: > > > d.append(line.strip('\n')) > > > print (d) > > > car_file.close() > > > > You could do most of that with just: > > > > car_file = open('worstcars.txt', 'r') > > d = car_file.readlines() > > > > but there's no real reason to read the whole file into a list. What you > > probably want to do is something like: > > > > d = {} > > car_file = open('worstcars.txt', 'r') > > for line in car_file: > > year, manufacturer, model = parse_line(line) > > d[manufacturer] = (year, model) > > > > One comment about the above; it assumes that there's only a single entry > > for a given manufacturer in the file. If that's not true, the above > > code will only keep the last one. But let's assume it's true for the > > moment. > > > > Now, we're just down to writing parse_line(). This takes a string and > > breaks it up into 3 strings. I'm going to leave this as an exercise for > > you to work out. The complicated part is going to be figuring out some > > logic to deal with anything from multi-word model names ("Imperial > > LeBaron Two-Door Hardtop"), to lines like the Corvair where there is no > > manufacturer (or maybe there's no model?).
Roy, thank you so much! I'll do some more research to see how I can achieve this. Thank you! -- http://mail.python.org/mailman/listinfo/python-list