[python] 사전의 키 순서

암호:

d = {'a': 0, 'b': 1, 'c': 2}
l = d.keys()

print l

이것은 인쇄합니다 ['a', 'c', 'b']. 방법이 lkeys() 내의 키워드 순서를 결정하는 방법을 잘 모르겠습니다 . 그러나 “적절한”순서로 키워드를 검색 할 수 있기를 바랍니다. 물론 적절한 순서는 목록을 만들 것 입니다.['a', 'b', 'c']



답변

OrderedDict (Python 2.7 필요) 이상을 사용할 수 있습니다 .

또한, 주 OrderedDict({'a': 1, 'b':2, 'c':3})때문에 작동하지 않습니다 dict당신이 만들 {...}이미 요소의 순서를 잊어있다. 대신 OrderedDict([('a', 1), ('b', 2), ('c', 3)]).

문서에서 언급했듯이 Python 2.7보다 낮은 버전의 경우이 레시피를 사용할 수 있습니다 .


답변

Python 3.7 이상

Python 3.7.0 에서 dict객체 의 삽입 순서 보존 특성은 Python 언어 사양의 공식 부분 으로 선언되었습니다 . 따라서 그것에 의존 할 수 있습니다.

Python 3.6 (CPython)

Python 3.6부터 Python의 CPython 구현을 위해 사전 은 기본적으로 삽입 순서유지 합니다. 이것은 구현 세부 사항으로 간주됩니다. collections.OrderedDict다른 Python 구현에서 보장되는 삽입 순서를 원하는 경우 계속 사용해야 합니다.

Python> = 2.7 및 <3.6

삽입 된 항목의 순서를 기억 하는 collections.OrderedDict클래스가 필요할 때 사용하십시오 dict.


답변

>>> print sorted(d.keys())
['a', 'b', 'c']

전달 된 iterable을 정렬 하는 sorted 함수를 사용하십시오 .

.keys()메서드는 임의의 순서로 키를 반환합니다.


답변

사용하고 싶을 때 목록을 정렬하면됩니다.

l = sorted(d.keys())


답변

에서 http://docs.python.org/tutorial/datastructures.html :

“사전 객체의 keys () 메서드는 사전에 사용 된 모든 키 목록을 임의의 순서로 반환합니다 (정렬하려면 sorted () 함수를 적용하면됩니다).”


답변

사전이 해시 맵이므로 순서는 중요하지 않습니다. 푸시되는 순서에 따라 다릅니다.

s = 'abbc'
a = 'cbab'

def load_dict(s):
    dict_tmp = {}
    for ch in s:
        if ch in dict_tmp.keys():
            dict_tmp[ch]+=1
        else:
            dict_tmp[ch] = 1
    return dict_tmp

dict_a = load_dict(a)
dict_s = load_dict(s)
print('for string %s, the keys are %s'%(s, dict_s.keys()))
print('for string %s, the keys are %s'%(a, dict_a.keys()))

출력 :
문자열 abbc의 경우 키는 문자열 cbab의 경우 dict_keys ([ ‘a’, ‘b’, ‘c’])
이고 키는 dict_keys ([ ‘c’, ‘b’, ‘a’])입니다.


답변