On 04/12/13 03:51, Byron Ruffin wrote:
is doing this. Also, it seems to be referencing chars when variable
lastName is an item in a list.
Thats because you are looping over the name.
Loops work on any iterable or sequence.
A string is a sequence of chars so you can loop over a
string as easily as over a list.
What you needed to do was lift Steve's code up a level
to your outer loop.
Here is all my code:
def createList2(filename):
List = []
senateInfo2 = {}
info = open( filename, "r" )
for line in info:
You could just do
for line in open(filename):
dataOnLine = line.split( "\t" )
state = dataOnLine[ 0 ]
senator = dataOnLine[ 1 ]
nameSplit = dataOnLine[ 1 ].split(" ")
if len(nameSplit) == 3:
lastName = nameSplit[1]
elif len(nameSplit) == 4:
lastName = nameSplit[2]
already_seen = set()
You should have moved that up before the for line...
for name in lastName:
You don't need this loop, you have the name, you
don't want to read its characters.
if name in already_seen:
print("Already seen", name)
else:
already_seen.add(name)
So move this out a level and change name to lastname:
if lastName in already_seen:
print("Already seen", lastName)
else:
already_seen.add(lastName)
senateInfo2[lastName] = state
That then leads onto Oscar's suggestion to store a list of
firstname/state tuples rather than just storing the last
state seen.
info.close()
return senateInfo2
HTH
--
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
http://www.flickr.com/photos/alangauldphotos
_______________________________________________
Tutor maillist - [email protected]
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor