Tôi muốn tạo một từ điển có giá trị là danh sách. Ví dụ:
{
1: ['1'],
2: ['1','2'],
3: ['2']
}
Nếu tôi làm:
d = dict()
a = ['1', '2']
for i in a:
for j in range(int(i), int(i) + 2):
d[j].append(i)
Tôi nhận được KeyError, vì d [...] không phải là danh sách. Trong trường hợp này, tôi có thể thêm đoạn mã sau sau khi gán a để khởi tạo từ điển.
for x in range(1, 4):
d[x] = list()
Có cách nào tốt hơn để làm điều này? Hãy nói rằng tôi không biết chìa khóa tôi sẽ cần cho đến khi tôi ở for
vòng lặp thứ hai . Ví dụ:
class relation:
scope_list = list()
...
d = dict()
for relation in relation_list:
for scope_item in relation.scope_list:
d[scope_item].append(relation)
Một sự thay thế sau đó sẽ được thay thế
d[scope_item].append(relation)
với
if d.has_key(scope_item):
d[scope_item].append(relation)
else:
d[scope_item] = [relation,]
cách tốt nhất để xử lý này là gì? Lý tưởng nhất, việc nối thêm sẽ "chỉ hoạt động". Có cách nào để diễn đạt rằng tôi muốn có một từ điển danh sách trống, ngay cả khi tôi không biết mọi khóa khi lần đầu tiên tạo danh sách?
collections
mô-đun cũng hoạt động theo cách này, ví dụcollections.OrderedDict
.