Trong bài viết này, chúng tôi sẽ thảo luận về cách triển khai thực tế cách viết từ điển danh sách sang CSV
Chúng ta có thể sử dụng mô-đun csv cho việc này. Đối tượng tệp csvwriter hỗ trợ ba phương thức như csvwriter. writerow[], csvwriter. writerows[], csvwriter. đầu ghi[].
cú pháp
csv.writer[csvfile, dialect='excel']
Thông số
- csvfile. Một đối tượng tệp với phương thức write[]
- phương ngữ [tùy chọn]. Tên của phương ngữ được sử dụng
Phương pháp 1. sử dụng csv. viết []
Để ghi từ điển danh sách vào tệp CSV, các chức năng cần thiết là csv. nhà văn[], csv. viết []. Phương pháp này viết một hàng tại một thời điểm. Các hàng của trường có thể được viết bằng phương pháp này
cú pháp
csvwriter.writerow[row]
ví dụ 1
Python3
csvwriter.writerow[row]5
csvwriter.writerow[row]6
csvwriter.writerow[row]7
csvwriter.writerow[row]8
csvwriter.writerow[row]9
csvwriter.writerow[row]0
csvwriter.writerow[row]0
csvwriter.writerow[row]1
csvwriter.writerow[row]2
csvwriter.writerow[row]3
csvwriter.writerow[row]4
csvwriter.writerow[row]5
csvwriter.writerow[row]6
csvwriter.writerow[row]7____18
csvwriter.writerow[row]7____120
csvwriter.writerow[row]7_______122
csvwriter.writerow[row]23
csvwriter.writerow[row]24
csvwriter.writerow[row]25
csvwriter.writerow[row]3
csvwriter.writerow[row]27
csvwriter.writerow[row]3
csvwriter.writerow[row]29
csvwriter.writerow[row]20
Hãy tưởng tượng rằng bạn đang tổ chức một hội nghị khoa học dữ liệu. Bạn đang lập danh sách những người tham dự. Sau này bạn muốn tra tên trong danh sách người tham dự này. Mất bao nhiêu thời gian để tìm tên nếu bạn lưu trữ dữ liệu dưới dạng danh sách và dưới dạng từ điển? . Bạn có thể giữ dữ liệu của mình trong danh sách hoặc từ điển. Bạn thậm chí có thể tạo bảng Excel và sử dụng các phím INDEX và MATCH để tìm tên bạn muốn
Nếu bạn đang lưu trữ hàng tỷ tên thì sao?
Trong blog này, tôi sẽ trả lời các câu hỏi liên quan đến thời gian về danh sách và từ điển
Hãy để tôi đưa ra định nghĩa ngắn gọn về danh sách và từ điển
danh sáchDanh sách là một trong những kiểu dữ liệu được sử dụng phổ biến nhất trong Python. Một danh sách là một chuỗi các mục trong một thứ tự
csvwriter.writerow[row]3
Danh sách có thể thay đổi, chúng có thể được thay đổi sau khi chúng được tạo
Truy cập các phần tử của danh sách
Chúng ta có thể truy cập các phần tử của danh sách theo chỉ mục của chúng
csvwriter.writerow[row]4Từ điển
Từ điển là bộ sưu tập không có thứ tự của các cặp khóa-giá trị hoặc mục
csvwriter.writerow[row]5
Từ điển cũng có thể thay đổi, chúng ta có thể thêm, xóa và/hoặc thay đổi các mục khi cần
Truy cập các phần tử của từ điển
Chúng ta có thể truy cập các phần tử của từ điển bằng khóa của chúng
csvwriter.writerow[row]6Chạy thử
Đã đến lúc chạy thử nghiệm và so sánh tốc độ tra cứu của cả từ điển và danh sách
Dưới đây là cấu hình phần cứng và phần mềm của thiết bị của tôi. Kết quả kiểm tra có thể khác nhau tùy thuộc vào cấu hình máy tính của bạn
Ảnh chụp màn hình của tác giả
Liệt kê chạy thử
Định nghĩa một chức năng để tìm một số trong một danh sách
csvwriter.writerow[row]7
Tạo danh sách dài và danh sách ngắn để so sánh tốc độ tra cứu
csvwriter.writerow[row]8
Gọi hàm và đo thời gian với timeit
csvwriter.writerow[row]9
Như chúng ta có thể thấy trong quá trình chạy thử, danh sách càng lớn thì càng mất nhiều thời gian
csvwriter.writerow[row]0
Chạy thử từ điển
Định nghĩa một chức năng để tìm một số trong từ điển
csvwriter.writerow[row]1
Tạo từ điển dài và từ điển ngắn để so sánh tốc độ tra cứu
csvwriter.writerow[row]2
Gọi hàm và đo thời gian bằng cách sử dụng timeit
csvwriter.writerow[row]40
Như chúng ta thấy trong quá trình chạy thử nghiệm, độ dài của từ điển không ảnh hưởng đến thời gian tra cứu
csvwriter.writerow[row]41Phân tích kết quả chạy thử
Trong ví dụ đơn giản này, với cấu hình máy tính xách tay của tôi,
cho 100 mặt hàng
0. 0000014 giây/0. 00000021 giây= 6. 66
Một từ điển là 6. Nhanh hơn 6 lần so với danh sách khi chúng tôi tra cứu 100 mục
Đối với 10.000.000 mặt hàng
0. 123 giây /0. 00000021giây = 585714. 28
Khi nói đến 10.000.000 mục, tra cứu từ điển có thể nhanh hơn 585714 lần so với tra cứu danh sách
6. 6 hoặc 585714 chỉ là kết quả chạy thử đơn giản với máy tính của tôi. Những điều này có thể thay đổi trong các trường hợp khác
Tại sao tra cứu các mục trong từ điển nhanh hơn nhiều?- Bạn phải đi qua toàn bộ danh sách để có được những gì bạn muốn. Tuy nhiên, từ điển sẽ trả về giá trị bạn yêu cầu mà không cần thông qua tất cả các khóa
- Hai lần ở trên cho 100 và 10000000 gần như giống nhau đối với từ điển, đó là vì từ điển có thể gần như ngay lập tức chuyển đến khóa mà nó được yêu cầu nhờ tra cứu
- Tra cứu trong từ điển nhanh hơn vì Python triển khai chúng bằng cách sử dụng bảng băm
- Nếu chúng ta giải thích sự khác biệt bằng các khái niệm Big O, từ điển có độ phức tạp thời gian không đổi, O[1] trong khi danh sách có độ phức tạp thời gian tuyến tính, O[n]
Cách nhanh nhất để tra cứu dữ liệu liên tục với hàng triệu mục trong Python là sử dụng từ điển. Vì từ điển là loại ánh xạ tích hợp trong Python nên chúng được tối ưu hóa cao. Tuy nhiên, chúng tôi có một sự đánh đổi không-thời gian điển hình trong từ điển và danh sách. Điều đó có nghĩa là chúng ta có thể giảm thời gian cần thiết cho thuật toán của mình nhưng chúng ta cần sử dụng nhiều dung lượng hơn trong bộ nhớ
Mặc dù từ điển được tối ưu hóa hơn rất nhiều trong Python 3. 6, chúng vẫn sử dụng nhiều bộ nhớ hơn danh sách, vì bạn cũng cần sử dụng dung lượng cho các khóa và tra cứu, trong khi danh sách chỉ sử dụng dung lượng cho các giá trị
Liên kết hữu ích- So sánh độ phức tạp về thời gian của các hoạt động khác như nối thêm, xóa, đảo ngược trong danh sách và từ điển từ Geek dành cho chuyên viên máy tính
- Một lời giải thích tuyệt vời về độ phức tạp của thời gian và ký hiệu O lớn của CS Dojo
3. Một lời giải thích ngắn gọn trong 6 phút về bảng băm và tra cứu của Gayle Laakmann, tác giả của cuốn sách Cracking The Coding Interview
Cảm ơn vì đã đọc
Nếu bạn muốn liên lạc, bạn có thể gửi email cho tôi theo địa chỉ seymatas@gmail. com, hoặc bạn có thể tìm thấy tôi tại https. //www. linkin. com/in/seyma-tas/