2014-09-21 3 views
0

값 유형으로 List으로 정렬 된 사전을 만들고 싶습니다. 목록으로 값이 지정된 주문 번호

나는이 메서드를 호출하려고 :

ordered = collections.OrderedDict(list) 

하지만 오류를 얻을 :

TypeError: 'type' object is not iterable 

내가 주문한 사전에 사용할 수있는 다른 데이터 구조가 있습니까?

나중에 프로그램에서 삽입 된 첫 번째 키/값 쌍을 가져와야합니다. 그래서 주문 된 목록이 필요합니다. 그 후에는 순서가 중요하지 않습니다.

+0

'defaultdict'가'OrderedDict'와 함께 사용되는 방식을 혼란스럽게합니다. 'OrderedDict'에 팩토리 함수를주지 않습니다. 당신은''OrderedDict''를 일반적인 dict와 같은 방법으로 만들지 만 삽입 순서는 유지됩니다. – dawg

+2

이것이 혼란이라고 나는 확신하지 못합니다. OP가'OrderedDict' 생성자에'list'를주는 것이 타입 어노테이션과 같아서 값이 가질 타입을 선언하는 것과 비슷합니다. 나는 OP가 호출 될 생성자 또는 그와 비슷한 것으로 list를 의미하지 않는다고 생각한다. – ely

답변

2

파이썬은 동적으로 입력됩니다. 미리 값 유형을 지정할 필요가 없으며 필요할 때 해당 유형의 오브젝트 만 삽입하면됩니다. 예를 들어

:

ordered = collections.OrderedDict() 
ordered[123] = [1,2,3] 

할 수 있습니다 next(ordered.iteritems()) (파이썬 2) 또는 next(ordered.items()) (파이썬 3)로 처음 삽입 키/값을 가져옵니다.

+0

ordered.items() [0]을 (를) 사용할 수 있습니까? – user3264659

+0

@ user3264659 파이썬 2에서만, 그리고 큰 dicts에 대한 속도가 느려질 것입니다. – interjay