Ich benutze heapq, um die größten Elemente aus der Liste der Listen zu bekommen. Das Programm, das ich geschrieben habe, ist unten.Wie bekomme ich n größten Listen aus einer Liste von Listen 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
Ich möchte nur die Top 20 Elemente. Anstatt zu sortieren, dachte ich an einen Haufen. Der Fehler, den ich erhalte, ist
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
Kann ich wissen, warum ich den Fehler bekomme und wie man es löst. Gibt es eine Eigenschaft von heapq, die ich vermisse?
was ist die Länge Ihrer Zeilen? sind das gleiche? – Kasramvd
Ja, sie sind Größe 4. Alle von ihnen. – WannaBeCoder