Nhờ có một số người tuyệt vời trên SO, tôi đã phát hiện ra các khả năng được cung cấp bởi collections.defaultdict
, đáng chú ý là khả năng đọc và tốc độ. Tôi đã đặt chúng để sử dụng với thành công.Nhiều cấp độ 'collection.defaultdict' trong Python
Bây giờ tôi muốn triển khai ba cấp độ từ điển, hai từ điển hàng đầu là defaultdict
và thấp nhất là int
. Tôi không tìm được 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ờ làm việc này, 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 mức độ thứ hai defaultdict
thuộc loại int
, nhưng tôi không tìm thấy nơi nào hoặc cách thực hiện.
Lý do tôi đang sử dụng defaultdict
ngay từ đầu là tránh phải khởi tạo từ điển cho mỗi khóa mới.
Bất kỳ đề xuất thanh lịch nào khác?
Thanks pythoneers!
Chỉ có vấn đề là nó sẽ không được chọn, nghĩa là 'đa xử lý' không vui khi gửi đi lại. – Noah
@ Noah: Nó sẽ được chọn nếu bạn sử dụng chức năng cấp mô-đun được đặt tên thay vì một lambda. – interjay
tất nhiên, ngớ ngẩn tôi. – Noah