Python: 목록 대 사전

Python에는 여러 유형의 데이터 구조가 있으며 그 중에서 List와 Dictionary가 그 중 하나입니다. 그래서 우리는 여기서 어떤 조건에서 어떤 것이 효율적인지에 대해 논의하고 있습니다.
먼저 둘 다에 대한 소개를 참조하십시오.

목록:



파이썬에서 listobjects와 다른 types의 순서를 저장하는 가장 다재다능한 데이터 구조입니다.
Python list 에는 mutable 가 있습니다. 이는 이러한 요소가 str 또는 tuple 와 달리 변경될 수 있음을 의미합니다. elements라는 목록의 이들items.
파이썬에서 list를 생성하는 방법은 여러 가지가 있지만 가장 간단한 방법은 [ ]를 사용하고 ,로 구분된 항목을 넣는 것입니다.
목록을 만드는 다양한 방법:
  • 한 쌍의 대괄호를 사용하여 빈 목록을 나타냅니다.
  • 대괄호를 사용하여 항목을 쉼표로 구분합니다.
  • 목록 이해를 사용합니다.
  • 유형 생성자를 사용합니다.

  • a = [] # provide empty list
    b = [1,2,3] 
    c = [x for x in iterable]
    d = list('abc')
    e = list((1,2,3))
    


    사전:



    Pythondictionary에서 매핑 개체는 hashable 값을 arbitrary 개체에 매핑합니다. Python의 Mapping type이며 표준mapping 유형은 dictionary 하나뿐입니다. 역시 mutable 입니다. Pythondictionary에는 key , value 쌍이 있으며 여기서 keys는 거의 임의적이며 Hashable , list 또는 기타 dictionary 유형을 포함하는 mutable 유사 값이 아닌 값은 사용되지 않습니다. keysdictionary와 같이 .

    Numeric types used for keys obey the normal rules for numeric comparison: if two numbers compare equal (such as 1 and 1.0) then they can be used interchangeably to index the same dictionary entry.


    lists 와 같이 다양한 방법으로 사전을 만들 수 있지만 가장 간단한 방법은 :keys 의 분리된 쌍을 values 안에 전달하는 것입니다.
    사전을 만드는 다양한 방법:
  • 중괄호 안에 쉼표로 구분된 key: value 쌍 목록을 사용하십시오.
  • 사전 이해를 사용합니다.
  • 유형 생성자를 사용합니다.

  • a = dict(one=1, two=2, three=3)
    b = {'one': 1, 'two': 2, 'three': 3}
    c = dict(zip(['one', 'two', 'three'], [1, 2, 3]))
    d = dict([('two', 2), ('one', 1), ('three', 3)])
    e = dict({'three': 3, 'one': 1, 'two': 2})
    f = dict({'one': 1, 'three': 3}, two=2)
    


    All the above examples return a dictionary equal to {"one": 1, "two": 2, "three": 3}.




    이제 우리는 주제에 도달했습니다. 우리는 일반적으로 목록이 사용하기 쉽기 때문에 프로그램에서 목록을 사용하지만 예를 들어 { } 항목이 엄청나게 많은 경우 어떻게 해야 합니까? 그런 다음 5000000는 항목을 조회하는 데 많은 시간이 걸리지만 lists와 동일한 작업을 수행하면 Python에서 dictionary의 평균 시간 복잡도가 dictionary key lookup이므로 매우 빠르게 수행됩니다. 해시 테이블로. O(1)의 시간 복잡도는 평균적으로 lookup in a list입니다. 그러나 O(n)와 비교하여 dictionarykeys 쌍을 저장하는 데 많은 공간을 차지한다는 점에서 values를 사용하는 데 또 하나의 문제가 있습니다. 그것이 lists의 최상의 상황입니다.


    If you search for a fixed number of keys, if you grow your haystack size (i.e. the size of the collection you’re searching through) by 10,000x from 1k entries to 10M entries, using a dict is over 5000x faster than using a list! (Source: Fluent Python by Luciano Ramalho)



    그러나 space-time tradeoff 이후에 우리는 python 3.6 이전보다 더 적게 소요되는 dict 의 새로운 구현을 가지므로 이제 더 이상 memory 이 아닙니다.

    The dict type has been reimplemented to use a more compact representation based on a proposal by Raymond Hettinger and similar to the PyPy dict implementation. This resulted in dictionaries using 20% to 25% less memory when compared to Python 3.5. (Source : python.org)



    읽어 주셔서 감사합니다.

    좋은 웹페이지 즐겨찾기