초기 데이터의 순서를 유지하도록 순서화 된 사전 (OD)을 초기화하는 올바른 방법은 무엇입니까?
from collections import OrderedDict
# Obviously wrong because regular dict loses order
d = OrderedDict({'b':2, 'a':1})
# An OD is represented by a list of tuples, so would this work?
d = OrderedDict([('b',2), ('a', 1)])
# What about using a list comprehension, will 'd' preserve the order of 'l'
l = ['b', 'a', 'c', 'aa']
d = OrderedDict([(i,i) for i in l])
질문:
는 것이다
OrderedDict
튜플 또는 목록 또는 등 목록 목록의 튜플의 튜플의 목록 또는 튜플의 순서를 유지 초기화 (2 & 3 위의 예)의 시간에 통과?OrderedDict
실제로 주문을 유지하고 있는지 확인하는 방법은 무엇입니까? adict
에 예측할 수없는 순서가 있으므로 내 테스트 벡터의 초기 순서가 예측할 수없는 사전 순서와 운 좋게 같은 경우 어떻게됩니까? 예를 들어,d = OrderedDict({'b':2, 'a':1})
라고 쓰는 대신d = OrderedDict({'a':1, 'b':2})
순서가 보존되었다고 잘못 결론을 내릴 수 있습니다. 이 경우 adict
가 알파벳순으로 정렬되어 있지만 항상 사실이 아닐 수도 있습니다. 반례를 사용하여 데이터 구조가 순서를 유지하는지 여부를 검증하는 신뢰할 수있는 방법은 무엇입니까?
추신. 여기에 참고 용으로 남겨 둘 게요 "파이썬의 함수 호출의 의미는 패스에 있기 때문에 OrderedDict 생성자 및 업데이트 () 메소드를 모두 키워드 인수를 사용할 수 있지만, 순서가 손실됩니다 키워드 인자 정기적으로 정렬되지 않은 사전을 사용"
PPS : 앞으로 OrderedDict는 kwargs의 순서도 보존 할 것입니다 (예제 1) : http://bugs.python.org/issue16991