1

I have the following list:

url_sims1=[('http://bp.velocityfrequentflyer.com/',
  [(2, 0.90452874),
   (1, 0.83522302),
   (4, 0.77591574),
   (0, 0.72705799),
   (3, 0.52282226)]),
 ('http://cartrawler.virginaustralia.com/',
  [(3, 0.79298556),
   (1, 0.78112978),
   (2, 0.76006395),
   (0, 0.58570701),
   (4, 0.40093967)]),
 ('https://cartrawler.virginaustralia.com/book',
  [(2, 0.9549554),
   (1, 0.71705657),
   (0, 0.58731651),
   (3, 0.43987277),
   (4, 0.38266104)]),
 ('https://fly.virginaustralia.com/SSW2010/VAVA/webqtrip.html',
  [(2, 0.96805269),
   (4, 0.68034023),
   (1, 0.66391909),
   (0, 0.64251828),
   (3, 0.50730866)]),
 ('http://www.magicmillions.com.au/',
  [(2, 0.84748113),
   (4, 0.8338449),
   (1, 0.61795002),
   (0, 0.60271078),
   (3, 0.20899911)])]

I want to replace this order

(2,...) 
(1,...)
(4,...) 
(0,...) 
(3,...)

with the following strings: categories=['arts and entertainment', 'points of passion', 'active lifestyle', 'consumer habits', 'travel savvy']. so for example, '2' will be replaced by categories[2]

I have written the following code:

for i in xrange(0, len(unique_url)): 
    for j in xrange(0, len(sims1)):
        for k in xrange(0,len(categories)):
            url_sims1[i][j][k][1]+=categories[k] 

But I am getting this error: IndexError: string index out of range

unique_url=['http://bp.velocityfrequentflyer.com/',
 'http://cartrawler.virginaustralia.com/',
 'https://cartrawler.virginaustralia.com/book',
 'https://fly.virginaustralia.com/SSW2010/VAVA/webqtrip.html',
 'http://www.magicmillions.com.au/']

sims1=[[(2, 0.90452874),(1, 0.83522302),(4, 0.77591574),(0, 0.72705799),(3, 0.52282226)],
 [(3, 0.79298556),(1, 0.78112978),(2, 0.76006395),(0, 0.58570701),(4, 0.40093967)],
 [(2, 0.9549554),(1, 0.71705657),(0, 0.58731651),(3, 0.43987277),(4, 0.38266104)],
 [(2, 0.96805269),(4, 0.68034023),(1, 0.66391909),(0, 0.64251828),(3, 0.50730866)],
 [(2, 0.84748113),(4, 0.8338449),(1, 0.61795002),(0, 0.60271078),(3, 0.20899911)]]

1 Answer 1

1

Given that you have url_sims1 and categories, then try:

In [4]: [(url, [(categories[i], x) for i,x in lst]) for url,lst in url_sims1]
Out[4]: 
[('http://bp.velocityfrequentflyer.com/',
  [('active lifestyle', 0.9045),
   ('points of passion', 0.8352),
   ('travel savvy', 0.7759),
   ('arts and entertainment', 0.7271),
   ('consumer habits', 0.5228)]),
 ('http://cartrawler.virginaustralia.com/',
  [('consumer habits', 0.793),
   ('points of passion', 0.7811),
   ('active lifestyle', 0.7601),
   ('arts and entertainment', 0.5857),
   ('travel savvy', 0.4009)]),
 ('https://cartrawler.virginaustralia.com/book',
  [('active lifestyle', 0.955),
   ('points of passion', 0.7171),
   ('arts and entertainment', 0.5873),
   ('consumer habits', 0.4399),
   ('travel savvy', 0.3827)]),
 ('https://fly.virginaustralia.com/SSW2010/VAVA/webqtrip.html',
  [('active lifestyle', 0.9681),
   ('travel savvy', 0.6803),
   ('points of passion', 0.6639),
   ('arts and entertainment', 0.6425),
   ('consumer habits', 0.5073)]),
 ('http://www.magicmillions.com.au/',
  [('active lifestyle', 0.8475),
   ('travel savvy', 0.8338),
   ('points of passion', 0.618),
   ('arts and entertainment', 0.6027),
   ('consumer habits', 0.209)])]

Alternatively, if your starting point is unique_url and sims1, then try:

 [(url, [(categories[i], x) for i,x in lst]) for url,lst in zip(unique_url, sims1)]
Sign up to request clarification or add additional context in comments.

1 Comment

thats brilliant. Thanks so much!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.