Tôi có một danh sách mà từ đó tôi cần phải loại bỏ các giá trị trùng lặp và tổng các giá trị cột tương ứng. Danh sách này là:Xóa các giá trị trùng lặp và tổng các giá trị cột tương ứng
lst = [['20150815171000', '1', '2'],
['20150815171000', '2', '3'],
['20150815172000', '3', '4'],
['20150815172000', '4', '5'],
['20150815172000', '5', '6'],
['20150815173000', '6', '7']]
Bây giờ tôi cần phải đi qua qua danh sách và nhận được một cái gì đó ra như thế này:
lst2 = [['20150815171000', '3', '5'],
['20150815172000', '12', '15'],
['20150815173000', '6', '7']]
Làm thế nào điều này có thể được thực hiện? Tôi đã cố gắng viết mã như hình dưới đây nhưng nó chỉ so sánh với các giá trị liên tiếp không, không phải tất cả các giá trị khớp.
lst2 = []
ws = wr = power = 0
for i in range(len(lst)):
if lst[i][0] == lst[i+1][0]:
time = lst[i][0]
ws = (float(lst[i][1])+float(lst[i+1][1]))
wr = (float(lst[i][2])+float(lst[i+1][2]))
else:
time = lst[i][0]
ws = lst[i][1]
wr = lst[i][2]
lst2.append([time, ws, wr, power])
Bất kỳ ai cũng có thể cho tôi biết cách tôi có thể thực hiện việc này?
Tạo một từ điển, bắt đầu với ví dụ '{'20150815171000': ['1', '2']}', sau đó chuyển trở lại danh sách sau – jonrsharpe
Đầu ra mẫu của bạn có giá trị tổng là chuỗi, nhưng mã của bạn làm cho chúng nổi. Vì vậy, những gì bạn _really_ muốn, dây hoặc nổi? –