[Tutor] problem with using set

Prasad, Ramit ramit.prasad at jpmorgan.com
Thu Oct 13 19:31:53 CEST 2011


----Original Message-----
From: tutor-bounces+ramit.prasad=jpmorgan.com at python.org [mailto:tutor-bounces+ramit.prasad=jpmorgan.com at python.org] On Behalf Of Prasad, Ramit
Sent: Thursday, October 13, 2011 10:09 AM
To: tutor at python.org
Subject: Re: [Tutor] problem with using set

Approach:-
>>> a='hello'
>>> set(a)
set(['h', 'e', 'l', 'o']), so i am thinking somehow if i remove 'l' and i join the string, i will get the desired output.

2.
>>> a='microsoft'
>>> set(a)
set(['c', 'f', 'i', 'm', 'o', 's', 'r', 't'])
>>> print ''.join(set(a))
cfimosrt

When i print "Hello", i get the output as "helo"(in same sequence) but when i write "microsoft" i get this-"cfimosrt". So, it means i can't predict the outcome of set(a)??
=========================================================================

Are you required to use set? If you are not, I think the following will be easier. 
>>> 'hello'.replace( 'l', '' )
'heo'
>>> 'microsoft'.replace( 'o', '' )
'micrsft'

If you require set, you can do:

>>> s = set("microsoft")
>>> s
set(['c', 'f', 'i', 'm', 'o', 's', 'r', 't'])
>>> s.remove('o')
>>> string = []
>>> for letter in 'microsoft':
...     if letter in s:
...         string.append( letter )
...     
>>> ''.join( string )
'micrsft'
==============================================
After further thought, I think you might want to keep one of each character and not remove them all. If so, see below.


>>> string = 'microsoft'
>>> dct = {}
>>> for letter in string:
...     dct[ letter ] = string.count( letter )
...     
>>> for letter, count in dct.iteritems():
...     reversed_string = string[::-1]  # reverse string to leave first occurrence
...     reversed_string = reversed_string.replace( letter, '', count-1 )
...     string = reversed_string[::-1] # return it to normal
...     
>>> string
'microsft'

If you do not care which duplicate character is left you can skip the lines with [::-1] and it will leave the last one in the string.


Ramit


Ramit Prasad | JPMorgan Chase Investment Bank | Currencies Technology
712 Main Street | Houston, TX 77002
work phone: 713 - 216 - 5423



This email is confidential and subject to important disclaimers and
conditions including on offers for the purchase or sale of
securities, accuracy and completeness of information, viruses,
confidentiality, legal privilege, and legal entity disclaimers,
available at http://www.jpmorgan.com/pages/disclosures/email.  
_______________________________________________
Tutor maillist  -  Tutor at python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor


More information about the Tutor mailing list