Để biết từ điển của danh sách, hãy xem xét defaultdict
.
A từ điển thông thường hoạt động tốt, nhưng nó làm tăng lỗi nếu không tìm thấy khóa.
list1 = list("abcd")
list2 = [1, 2, 3, 4]
d = {"list1": list1, "list2": list2}
d["list3"]
# KeyError: 'list3'
Điều này có thể gây rối trong một số ứng dụng và có thể yêu cầu xử lý ngoại lệ bổ sung.
defaultdict
hoạt động như một lệnh thông thường trong khi thêm một số bảo vệ chống lại lỗi.
import collections as ct
dd = ct.defaultdict(list)
dd.update(d)
dd
# defaultdict(list, {'list1': ['a', 'b', 'c', 'd'], 'list2': [1, 2, 3, 4]})
Thêm phím bị thiếu sẽ gọi chức năng nhà máy mặc định, tức là list
. Ở đây thay vì lỗi, chúng tôi nhận được vùng chứa trống:
dd["list3"]
# []
Mục nhập này đã được thêm vào danh sách trống.
dd
# defaultdict(list,
# {'list1': ['a', 'b', 'c', 'd'],
# 'list2': [1, 2, 3, 4],
# 'list3': []})
Chuyển đổi một defaultdict
đến một dict thường xuyên bằng cách thiết lập các nhà máy mặc định để None
dd.default_factory = None
dd
# defaultdict(None, {'list1': ['a', 'b', 'c', 'd'], 'list2': [1, 2, 3, 4]})
hoặc bằng dict()
dựng sẵn:
dict(dd)
# {'list1': ['a', 'b', 'c', 'd'], 'list2': [1, 2, 3, 4]}
Bạn cần phải sử dụng xoăn chứ không phải là dấu ngoặc vuông , nhưng nếu không thì điều này có lẽ là tốt như nó được. – NPE