2016-07-26 5 views
1

У меня есть следующий список:IndexError: индекс строки из диапазона питона

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)])] 

Я хочу, чтобы заменить этот порядок

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

со следующими строками: категории = [ «Искусство и развлечения» , «страсти», «активный образ жизни», «потребительские привычки», «сообразительность путешествия»). так, например, «2» будет заменен на категории [2]

я написал следующий код:

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] 

Но я получаю эту ошибку: IndexError: индекс строки из диапазона

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

Учитывая, что у вас есть url_sims1 и categories, попробуйте:

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)])] 

С другой стороны, если ваша отправная точка unique_url и sims1, попробуйте:

[(url, [(categories[i], x) for i,x in lst]) for url,lst in zip(unique_url, sims1)] 
+1

тот блестящий. Спасибо! – Technologic27