값이 목록 인 사전을 만들고 싶습니다. 예를 들면 다음과 같습니다.
{
1: ['1'],
2: ['1','2'],
3: ['2']
}
만약 내가한다면:
d = dict()
a = ['1', '2']
for i in a:
for j in range(int(i), int(i) + 2):
d[j].append(i)
d [...]가 목록이 아니기 때문에 KeyError가 발생합니다. 이 경우 a를 할당 한 후 다음 코드를 추가하여 사전을 초기화 할 수 있습니다.
for x in range(1, 4):
d[x] = list()
더 좋은 방법이 있습니까? 두 번째 for
루프 가 될 때까지 필요한 키를 모른다고 가정 해 봅시다. 예를 들면 다음과 같습니다.
class relation:
scope_list = list()
...
d = dict()
for relation in relation_list:
for scope_item in relation.scope_list:
d[scope_item].append(relation)
대안은 다음 교체 될 것입니다
d[scope_item].append(relation)
와
if d.has_key(scope_item):
d[scope_item].append(relation)
else:
d[scope_item] = [relation,]
이것을 처리하는 가장 좋은 방법은 무엇입니까? 이상적으로 추가하면 "그냥 작동"할 것입니다. 처음 목록을 만들 때 모든 키를 모르더라도 빈 목록의 사전을 원한다고 표현하는 방법이 있습니까?
collections
예를 들어 모듈 아래의 다른 사전 도 이런 방식으로 작동합니다collections.OrderedDict
.