I have such a method which takes a URL, such as http://twitter.com/ttt or twitter.com/dasd, and should show its domain with http: http://twitter.com and name twitterdef show_domain(url):    sites = {        'twitter': ['http://www.twitter.com/', 'twitter'],        'facebook': ['http://www.facebook.com/', 'facebook'],        'pininterest': ['http://www.pininterest.com/', 'pininterest']    }    if sites['twitter'][0] in url:        link = sites['twitter'][0]        brand = sites['twitter'][1]    elif sites['facebook'][0] in url:        link = sites['facebook'][0]        brand = sites['facebook'][1]    else:        link = sites['pininterest'][0]        brand = sites['pininterest'][1]    return link, brandIs there way to optimise this code?
Showing the domain of a URL
python;optimization;url
You can use tuple unpacking/list unpacking to write :if sites['twitter'][0] in url:    link, brand = sites['twitter']elif sites['facebook'][0] in url:    link, brand = sites['facebook']else:    link, brand = sites['pininterest']return link, brandNow, the data structure you are using is a bit akward because you don't use the key at all. Instead of mapping string to list of strings, you could have a list of list of strings. Even better, you could use list of tuple of strings :sites = [    ('http://www.twitter.com/', 'twitter'),    ('http://www.facebook.com/', 'facebook'),    ('http://www.pininterest.com/', 'pininterest')]if sites[0][0] in url:    link, brand = sites[0]elif sites[1][0] in url:    link, brand = sites[1]else:    link, brand = sites[2]return link, brandNow, this seems to be begging to be written with a loopfor (link, brand) in sites:    if link in url:        return link, brandreturn None # or anything you like