Tôi đang sử dụng heapq để lấy các phần tử nlargest từ danh sách các danh sách. Chương trình tôi đã viết là dưới đây.Làm cách nào để lấy n danh sách lớn nhất từ danh sách các danh sách trong 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
Tôi chỉ muốn 20 yếu tố hàng đầu. Vì vậy, thay vì phân loại tôi nghĩ đến việc sử dụng một đống. Lỗi tôi nhận được là,
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
Tôi có thể biết tại sao tôi gặp lỗi và cách giải quyết. Có bất kỳ tài sản của việc sử dụng heapq tôi đang mất tích.
chiều dài của các hàng của bạn là bao nhiêu? có giống nhau không? – Kasramvd
Vâng, chúng có kích thước 4. Tất cả chúng. – WannaBeCoder