2012-07-06 39 views
5

Tôi đang phân tích cú pháp hàng trăm triệu bản ghi JSON và lưu trữ các thành phần liên quan từ mỗi trong một dict. Vấn đề là bởi vì số lượng hồ sơ tôi đang xử lý, python đang bị buộc phải tăng kích thước của bảng băm cơ bản của dict nhiều lần. Điều này dẫn đến rất nhiều dữ liệu phải được phục hồi. Lượng hồi phục tuyệt đối dường như tốn rất nhiều thời gian. Vì vậy, tôi tự hỏi nếu có một cách để thiết lập một kích thước tối thiểu trên bảng băm cơ bản của dict để số lượng các hoạt động thay đổi kích thước được giảm thiểu.python dict set min_size

Tôi đã đọc this khi tối ưu hóa số python dict, từ câu trả lời trên this question, nhưng không thể tìm thấy cách thay đổi kích thước ban đầu của bảng băm của dict. Nếu bất cứ ai có thể giúp tôi với điều này, tôi sẽ rất biết ơn.

Cảm ơn bạn

Trả lời

2

Nếu bạn làm điều này:

a = dict.fromkeys(range(n)) 

nó sẽ buộc các kích thước từ điển để chứa các mặt hàng n. Nó là khá nhanh sau đó, nhưng phải mất 3s để làm như vậy.

+0

Chắc chắn, điều đó giúp tôi có được kích thước phù hợp. Nhưng nó không giúp tôi có được chìa khóa đúng. Tôi phải xóa tất cả các khóa 'n' nhiều và lặp lại với các khóa chính xác, khi tôi xử lý từng bản ghi JSON. Điều đó sẽ không chậm? – inspectorG4dget

+0

Nó sẽ giúp với tốc độ. Viết một thử nghiệm nhỏ làm như vậy. Nó sẽ tạo ra một dict của một kích thước được biết đến với tất cả các giá trị mặc định là None hoặc giá trị của sự lựa chọn của bạn –

+0

Không có giải pháp neater hơn nhân tạo thổi cấu trúc dữ liệu với các giá trị rác? :( – comiventor

Các vấn đề liên quan