Nhờ một số người tuyệt vời về SO, tôi đã khám phá ra những khả năng được cung cấp bởi collections.defaultdict
, đáng chú ý là khả năng đọc và tốc độ. Tôi đã đưa chúng vào sử dụng với thành công.
Bây giờ tôi muốn thực hiện ba cấp độ từ điển, hai cấp độ cao nhất và cấp độ defaultdict
thấp nhất int
. Tôi không tìm thấy cách thích hợp để làm điều này. Đây là nỗ lực của tôi:
from collections import defaultdict
d = defaultdict(defaultdict)
a = [("key1", {"a1":22, "a2":33}),
("key2", {"a1":32, "a2":55}),
("key3", {"a1":43, "a2":44})]
for i in a:
d[i[0]] = i[1]
Bây giờ điều này hoạt động, nhưng sau đây, đó là hành vi mong muốn, không:
d["key4"]["a1"] + 1
Tôi nghi ngờ rằng tôi nên tuyên bố ở đâu đó rằng cấp độ thứ hai defaultdict
là loại int
, nhưng tôi đã không tìm thấy ở đâu hoặc làm thế nào để làm như vậy.
Lý do tôi đang sử dụng defaultdict
ở nơi đầu tiên là để tránh phải khởi tạo từ điển cho mỗi khóa mới.
Bất kỳ đề nghị thanh lịch hơn?
Cảm ơn pythoneers!
multiprocessing
là không hài lòng về việc gửi chúng qua lại.