Sto usando heapq per ottenere gli ultimi elementi dalla lista degli elenchi. Il programma che ho scritto è qui sotto.Come posso ottenere n elenchi più grandi da un elenco di elenchi in python
import csv
import heapq
f = open("E:/output.csv","r")
read = csv.reader(f)
allrows = [row for row in read]
for i in xrange(0,2):
print allrows[i]
allrows.sort(key=lambda x: x[2]) #this is working properly
it=heapq.nlargest(20,enumerate(allrows),key=lambda x:x[2]) #error
Voglio solo i primi 20 elementi. Quindi invece di ordinare ho pensato di usare un mucchio. L'errore che sto ottenendo è,
Traceback (most recent call last):
File "D:\eclipse_progs\DaDv\IMDB\Assignment1.py", line 42, in <module>
it=heapq.nlargest(2,enumerate(allrows),key=lambda x:x[2])
File "C:\Python27\lib\heapq.py", line 470, in nlargest
result = _nlargest(n, it)
File "D:\eclipse_progs\DaDv\IMDB\Assignment1.py", line 42, in <lambda>
it=heapq.nlargest(2,enumerate(allrows),key=lambda x:x[2])
IndexError: tuple index out of range
Posso sapere perché sto ottenendo l'errore e come risolverlo. C'è qualche proprietà dell'utilizzo di heapq che mi manca.
qual è la lunghezza delle righe? sono quelli stessi? – Kasramvd
Sì, sono la dimensione 4. Tutti loro. – WannaBeCoder