[PYTHON] 사전에 삽입 된 순서대로 항목을 검색하는 방법은 무엇입니까?
PYTHON사전에 삽입 된 순서대로 항목을 검색하는 방법은 무엇입니까?
삽입 된 순서대로 파이썬 사전에서 항목을 검색 할 수 있습니까?
해결법
-
==============================
1.표준 파이썬 사전은 이것을 할 수 없습니다.
표준 파이썬 사전은 이것을 할 수 없습니다.
표준 라이브러리의 콜렉션 모듈에 "순서가 지정된 사전"(삽입 순서를 추적하는)을 추가하는 제안 (PEP 372)이 있습니다. 여기에는 순서가 지정된 사전의 다양한 구현에 대한 링크가 포함되어 있습니다 (Python 요리 책의이 두 가지 조리법 참조).
코드가 "공식"버전과 호환되도록하려는 경우 (제안서가 최종적으로 승인되는 경우) PEP의 참조 구현을 계속 사용하고자 할 수 있습니다.
편집 : PEP는 받아 들여지고 파이썬 2.7과 3.1에 추가되었습니다. 문서를 참조하십시오.
-
==============================
2.다른 답변은 정확합니다. 가능하지는 않지만 직접 쓰실 수 있습니다. 그러나 실제로 이런 식으로 구현하는 방법을 잘 모르겠다면 여기에 작성한 dict 하위 클래스가 작성하고 테스트 한 작업이 완료되었습니다. (생성자에 전달 된 값의 순서는 정의되어 있지 않지만 나중에 전달 된 값보다 먼저 나오고 순서가 지정된 딕트가 값으로 초기화되는 것을 허용하지 않을 수 있습니다.)
다른 답변은 정확합니다. 가능하지는 않지만 직접 쓰실 수 있습니다. 그러나 실제로 이런 식으로 구현하는 방법을 잘 모르겠다면 여기에 작성한 dict 하위 클래스가 작성하고 테스트 한 작업이 완료되었습니다. (생성자에 전달 된 값의 순서는 정의되어 있지 않지만 나중에 전달 된 값보다 먼저 나오고 순서가 지정된 딕트가 값으로 초기화되는 것을 허용하지 않을 수 있습니다.)
class ordered_dict(dict): def __init__(self, *args, **kwargs): dict.__init__(self, *args, **kwargs) self._order = self.keys() def __setitem__(self, key, value): dict.__setitem__(self, key, value) if key in self._order: self._order.remove(key) self._order.append(key) def __delitem__(self, key): dict.__delitem__(self, key) self._order.remove(key) def order(self): return self._order[:] def ordered_items(self): return [(key,self[key]) for key in self._order] od = ordered_dict() od["hello"] = "world" od["goodbye"] = "cruel world" print od.order() # prints ['hello', 'goodbye'] del od["hello"] od["monty"] = "python" print od.order() # prints ['goodbye', 'monty'] od["hello"] = "kitty" print od.order() # prints ['goodbye', 'monty', 'hello'] print od.ordered_items() # prints [('goodbye','cruel world'), ('monty','python'), ('hello','kitty')]
-
==============================
3.OrderedDict () 사용, 버전 2.7부터 사용 가능
OrderedDict () 사용, 버전 2.7부터 사용 가능
호기심에 불과합니다.
from collections import OrderedDict a = {} b = OrderedDict() c = OredredDict() a['key1'] = 'value1' a['key2'] = 'value2' b['key1'] = 'value1' b['key2'] = 'value2' c['key2'] = 'value2' c['key1'] = 'value1' print a == b #True print a == c #True print b == c #False
-
==============================
4.또는 키를 튜플의 첫 번째 필드로 time.now ()와 함께 터플링합니다.
또는 키를 튜플의 첫 번째 필드로 time.now ()와 함께 터플링합니다.
그런 다음 dictname.keys (), sort 및 voila를 사용하여 키를 검색 할 수 있습니다!
독일 사람
-
==============================
5.기본 dict 클래스에서는이를 수행 할 수 없습니다.이 클래스는 해시순으로 정렬됩니다. 당신은 정말로 키, 값 쌍 또는 somesuch의 목록입니다 주문할 수있는 자신의 사전을 구축 할 수 있습니다.
기본 dict 클래스에서는이를 수행 할 수 없습니다.이 클래스는 해시순으로 정렬됩니다. 당신은 정말로 키, 값 쌍 또는 somesuch의 목록입니다 주문할 수있는 자신의 사전을 구축 할 수 있습니다.
-
==============================
6.StableDict를 사용하여 좋은 결과를 얻었습니다.
StableDict를 사용하여 좋은 결과를 얻었습니다.
http://pypi.python.org/pypi/StableDict/0.2
-
==============================
7.또는 pythonutils의 odict 모듈처럼 여기에 설명 된 PEP-372 구현을 사용하십시오.
또는 pythonutils의 odict 모듈처럼 여기에 설명 된 PEP-372 구현을 사용하십시오.
pocoo.org 구현을 성공적으로 사용 했으므로,
my_dict={} my_dict["foo"]="bar"
와
my_dict=odict.odict() my_dict["foo"]="bar"
이 파일 만 필요합니다.
-
==============================
8.나중에 참조 할 수 있도록 키를 별도의 목록에 저장하지 않으면 불가능합니다.
나중에 참조 할 수 있도록 키를 별도의 목록에 저장하지 않으면 불가능합니다.
-
==============================
9.당신이 할 수있는 것은 입력 된 순서를 나타내는 키와 함께 값을 삽입 한 다음 항목들에 대해 sorted ()를 호출하는 것입니다.
당신이 할 수있는 것은 입력 된 순서를 나타내는 키와 함께 값을 삽입 한 다음 항목들에 대해 sorted ()를 호출하는 것입니다.
>>> obj = {} >>> obj[1] = 'Bob' >>> obj[2] = 'Sally' >>> obj[3] = 'Joe' >>> for k, v in sorted(obj.items()): ... print v ... Bob Sally Joe >>>
-
==============================
10.dict 기능이 필요없고 삽입 한 순서로 튜플을 반환하기 만하면 큐가 더 잘 작동하지 않을까요?
dict 기능이 필요없고 삽입 한 순서로 튜플을 반환하기 만하면 큐가 더 잘 작동하지 않을까요?
-
==============================
11.Python 3.7부터 표준 dict는 삽입 순서를 유지합니다. 문서에서 :
Python 3.7부터 표준 dict는 삽입 순서를 유지합니다. 문서에서 :
따라서 사전을 정상적으로 반복하거나 popitem ()을 사용할 수 있어야합니다.
from https://stackoverflow.com/questions/60848/how-do-you-retrieve-items-from-a-dictionary-in-the-order-that-theyre-inserted by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 파이썬에서 for 루프 (0) | 2018.10.13 |
---|---|
[PYTHON] r 및 rb 모드에서 텍스트 파일 구문 분석의 차이점 (0) | 2018.10.13 |
[PYTHON] Python dict를 반복하면서 수정 (0) | 2018.10.13 |
[PYTHON] 목록의 파이썬 정렬 목록 / 오름차순 및 내림차순 (0) | 2018.10.13 |
[PYTHON] pyplot.barh ()로 각 막대의 막대 값을 표시하는 방법? (0) | 2018.10.13 |