Showing posts with label python. Show all posts
Showing posts with label python. Show all posts

Wednesday, July 6, 2011

Python - All Set for Comparison

I spent entire evening looking for a way to sort the characters in a string and figured it out.
  1. Turn the String into List. 
  2. Sort it. 
  3. Join it back as a String.
And then, I stumbled upon a better way to do string comparison. Convert them to sets!!!
set(stringA).difference(stringB)

Note that it may not be same as
set(stringB).difference(stringA)

Details on set theory here:

Discussion here:


Friday, August 27, 2010

Create Dictionary from a nested List

def crdic(a):
b={}
printOP=0
for i in a:
if len(i) != 2:
print 'ERROR - Inner list has more/less than two elements'
printOP=1
break
else:
b[i[0]]=i[1]
if printOP != 1:
print 'Got list : ', a
print 'Created dictionary : ', b

a=[['name','ruchi'],['nickname','r007']]
a1=[['name','ruchi','penguin'],['nickname','r007']]

crdic(a)
crdic(a1)



>>> 
Got list : [['name', 'ruchi'], ['nickname', 'r007']]
Created dictionary : {'nickname': 'r007', 'name': 'ruchi'}
ERROR - Inner list has more/less than two elements
>>>

Sunday, February 28, 2010

Global Variables

If you want to access same variable in multiple functions, you declare it as global var1 in your program.

Global variables can be read from all the functions but if you need to modify them, you need to declare them again in that function. Why? So that you don't inadvertently cause cascading effect. It's a preventive measure.

But then how are we able to read the variables w/o declaring them? It's a friendly feature. Python looks for local variables and if they are not found; it looks for any global variable. Since you're just trying to read the variable; it won't (hopefully) be a costly mistake.

Tuesday, February 23, 2010

Friday, February 19, 2010

python - translate and maketrans

>>> mystring='these'
>>> string.maketrans('ts','75')
'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\
x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&\'()*+,-./0123456789:;<=>?@ABC
DEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqr57uvwxyz{|}~\x7f\x80\x81\x82\x83
\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97
\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab
\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf
\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3
\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7
\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb
\xfc\xfd\xfe\xff'
>>> transtbl=string.maketrans('ts','75')
>>>
>>> mystring
'these'
>>> mystring.translate(transtbl)
'7he5e'
>>>
>>>
>>> mystring
'these'
>>> mystring.translate(None,'ts')
'hee'
>>>


To translate mystring we need a translate table which has to be 256 bytes long. So we will use maketrans to cook up that table for us.

syntax: string.maketrans("From","to")

Just use this table in translate function.

syntax: mystringhere.translate("translation table")

Also, translate can be used without a translation table. If we give translation table as "None" and then provide optional list, these listed characters will be deleted.

The latter way of translate can come handy if you want to check if an incoming string contains numbers.

e.g.

>>> mystring='ab1234'
>>> if len(mystring.translate(None,'0123456789')) < len(mystring) :
... print 'input string contains numbers'
...
input string contains numbers

#