I realize the code snippet was bad. It was meant to be pseudo code. I was on my phone and far from pc. Anyway....
I tried this: already_seen = set() for name in last_names: if name in already_seen: print("Already seen", name) else: already_seen.add(name) I am not seeing a pattern in the output to give me a clue as to why it is doing this. Also, it seems to be referencing chars when variable lastName is an item in a list. Unexpected output: Python 3.2.3 (default, Apr 11 2012, 07:15:24) [MSC v.1500 32 bit (Intel)] on win32 Type "copyright", "credits" or "license()" for more information. >>> ================================ RESTART ================================ >>> Already seen s Already seen s Already seen k Already seen r Already seen o Already seen e Already seen i Already seen n Already seen l Already seen n Already seen e Already seen l Already seen r Already seen o Already seen s Already seen s Already seen o Already seen n Already seen l Already seen s Already seen n Already seen l Already seen t Already seen l Already seen k Already seen i Already seen r Already seen n Already seen l Already seen u Already seen e Already seen n Already seen l Already seen e Already seen h Already seen e Already seen t Already seen e Already seen e Already seen n Already seen e Already seen l Already seen i Already seen l Already seen i Already seen r Already seen a Already seen e Already seen e Already seen o Already seen e Already seen h Already seen e Already seen a Already seen t Already seen o Already seen n Already seen e Already seen r Already seen n Already seen e Already seen r Already seen r Already seen l Already seen e Already seen l Already seen e Already seen n Already seen o Already seen n Already seen r Already seen a Already seen s ['John Cornyn (R)', 'Ted Cruz (R)'] New Mexico Here is all my code: def createList( filename ): # print( filename ) senateInfo = {} try: info = open( filename, "r" ) for line in info: # print( line ) dataOnLine = line.split( "\t" ) state = dataOnLine[ 0 ] senator = dataOnLine[ 1 ] if state in senateInfo: # Adding another senator. # Create a list of the both senators from that state. incumbent = senateInfo[state] senators = [ incumbent, senator ] senateInfo[state] = senators else: senateInfo[state] = senator #print( senateInfo ) info.close() except: print( filename, " did not open! qUITTING." ) return senateInfo def createList2(filename): List = [] senateInfo2 = {} info = open( filename, "r" ) for line in info: 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() for name in lastName: if name in already_seen: print("Already seen", name) else: already_seen.add(name) senateInfo2[lastName] = state info.close() return senateInfo2 def test( state, senatorsInfo ): print( senatorsInfo[state] ) def test2( senator, usSenators ): print( usSenators[senator] ) def main(): usSenators = createList( "USSenators.txt" ) usSenators2 = createList2( "USSenators.txt" ) test( "Texas", usSenators ) test2("Udall", usSenators2 ) main() On Tue, Dec 3, 2013 at 7:54 PM, Steven D'Aprano <st...@pearwood.info> wrote: > On Tue, Dec 03, 2013 at 11:55:30AM -0600, Byron Ruffin wrote: > > What I am having trouble with is finding a way to say: if lastName > appears > > more than once, print something. > > > > I ran a bit of code: > > For x in lastname > > If lastname = udall > > Print something > > You most certainly did not run that. That's not Python code. Precision > and accuracy is vital when programming. Please tell us what you > *actually* ran, not some vague summary which may or may not be in the > right ballpark. > > Copy and paste is your friend here: copy and paste the block of code you > ran, don't re-type it from memory. > > > This prints x twice. > > > > I think what I might be hung up on is understanding the ways that I can > use > > a loop. I know I need to loop through the list of names, which I have, > and > > set a condition dor the apppearance of a string occurring more than once > in > > a list but I don't know how to translate this to code. How do I say: if > > you see it twice, do something? > > How do you know you've seen it twice? You have to remember the things > you've seen before. The best way to do this is with a set, if possible, > or if not, a list. > > already_seen = set() > for name in last_names: > if name in already_seen: > print("Already seen", name) > else: > already_seen.add(name) > > > > Here's another way, not recommended because it will be slow for large > numbers of names. (But if you only have a few names, it will be okay. > > for name in last_names: > n = last_names.count(name) > print(name, "appears %d times" % n) > > > Can you combine the two so that the number of times a name appears is > only printed the first time it is seen? > > > > -- > Steven > _______________________________________________ > Tutor maillist - Tutor@python.org > To unsubscribe or change subscription options: > https://mail.python.org/mailman/listinfo/tutor >
_______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor