나는 이것에 대한 많은 구현을 보았다. 최고로 간주되거나 표준으로 떠오르는 것이 있습니까?파이썬에서 가장 잘 정돈 된 사전 구현은 무엇입니까?
내가 주문한 dict의 의미는 객체가 PHP의 배열과 비슷한 키의 순서에 대한 개념을 갖고 있다는 것입니다.
odict PEP 372은 강력한 후보자처럼 보이지만 승자라는 것은 완전히 분명하지 않습니다.
나는 이것에 대한 많은 구현을 보았다. 최고로 간주되거나 표준으로 떠오르는 것이 있습니까?파이썬에서 가장 잘 정돈 된 사전 구현은 무엇입니까?
내가 주문한 dict의 의미는 객체가 PHP의 배열과 비슷한 키의 순서에 대한 개념을 갖고 있다는 것입니다.
odict PEP 372은 강력한 후보자처럼 보이지만 승자라는 것은 완전히 분명하지 않습니다.
표준을 보지 못했습니다. 모두가 자신의 역할을하는 것처럼 보입니다. (this question에 대한 답변 참조). PEP 372에서 OrderedDict
patch을 사용할 수 있다면 가장 좋은 방법입니다. stdlib에 포함 된 모든 것은 모두가 지금부터 1 년 또는 2 년 동안 사용하는 매우 높은 가능성을 가지고 있습니다.
레이몬드 Hettinger의이 하나가 드롭 인 대체 collections.OrderedDict 파이썬 2.7에 나타날 것입니다 : http://pypi.python.org/pypi/ordereddict
문서는 파이썬 2.7에있을 것입니다 무엇에 해당 말할 컬렉션의 DEV 버전, 그래서 아마 파이썬과 함께 올 것입니다.
당신이 easy_install ordereddict
로를 설치하고과 같이 사용할 수 있도록 나는 PyPI에 넣어 한 다음 collections
모듈에 OrderedDict을
from ordereddict import OrderedDict
d = OrderedDict([("one", 1), ("two", 2)])
Raymond Hettinger의 명령은 collections.OrderedDict보다 짧고 우아합니다. 나는 collections.OrderedDict가 Raymond의 것보다 낫다고 생각했다. 어떻게 표준 패키지의 패키지가 다른 패키지만큼 좋지 않은가? – FrostNovaZzz
@FrostNovaZzz collections.OrderedDict는 지금까지 훨씬 더 많은 사용을 보았습니다. 따라서 "부끄럽지 않은"차이점은 실제로 버그 수정이라고 생각합니다. – shoyer
파이썬 2.7 이상이이 같은 것을 고려해야하므로, '표준'. 그 기능이 충분하다면 아마 그것을 사용해야 할 것입니다.
그러나 구현 방법은 최소한이고 충분하지 않은 경우 Foord/Larossa 또는 ordereddict에 의해 odict (나에게 해당)을보아야합니다.이 경우 더 적합합니다. 두 구현은 collections.OrderedDict
이 제공하는 기능의 상위 집합입니다. 둘 사이의 차이점은 odict
은 순수한 파이썬이고 ordereddict
은 훨씬 더 빠른 C
확장 모듈입니다.
최소한의 접근 방식은 필요한 기능을 모두 제공하더라도 반드시 좋을 수는 없습니다. collections.OrderedDict
은 OrderedDict
의 repr()
을 자체 값 중 하나로 중첩 할 때 처음에는 bug이었습니다. 이전에 발견되었을 수있는 버그에는 하위 집합 인 OrderedDict가 처리 할 수있는 작은 하위 집합 인 unittests of older의 ordereddict
이 사용되었습니다.
네 작품에 감사드립니다, 안톤! 나는 귀하의 명령을 받으려고했지만 귀하의 웹 사이트에있는 zip 및 tar 아카이브는 모두 죽었습니다. 또한이 프로젝트가 아직 살아 있는지 조금 걱정됩니다. 미래의 파이썬으로 업데이트 될 예정입니까? 또한, 아마도 그것을 pip에두면 대중적으로 만들 수 있을까요?귀하의 웹 사이트에서 7 배 빠른 속도를 보았습니다. 왜 파이썬 개발자가이 구현을 파이썬의 기본값으로 선택하지 않았는지 모르겠습니다. – jichi
@jichi'ordersdict'를 [bitbucket] (https://bitbucket.org/ruamel/ordereddict)로 옮기고'pip'로 설치할 수있게하고 있습니다. tat 후에도 Python 3.X 호환성을 살펴볼 것입니다 (아마 collections.OrderedDict와 같은 기능을 가진, 버려진 버전을 기반으로 할 것입니다). 웹 사이트의 링크가 다시 작동해야합니다. – Anthon
훌륭한 링크가 이제 작동합니다. 당신의 일에 감사드립니다! – jichi
collections.OrderedDict
은 이제 널리 사용 가능하지만 성능이 문제가되는 경우 내 패키지 cyordereddict을 사용하는 것이 좋습니다. 표준 라이브러리 인 OrderedDict to Cython의 직접 포트이며 2-6 배 빠릅니다.
-1 : "최상"은 정의되지 않습니다. –