Reputation: 351
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)]]
Upvotes: 1
Views: 210
Reputation: 113994
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)]
Upvotes: 1