Автор оригинала: Kelvin Paschal.
Hashtables или словари – это эффективная структура данных для структурирования/хранения данных и к счастью, она встроена в Python для нашего собственного удобства. Словари похожи на списки, но более общего, в списках индексы должны быть целыми числами, в то время как в словарях они могут быть практически любого типа. Словари похожи на карты, в основном то, что они делают, это карта ключа к его значению, поэтому в маленьких словах словари – это просто коллекция пар клавишных значений.
Итак, давайте инициализируем словарь
>>>example_dict = dict() >>>print example_dict {} # It outputs an empty dictionary
Теперь добавьте некоторые ключи и значения в наш словарь
>>>example_dict["une"]="one" >>>example_dict["deux"]="two" >>>example_dict["trois"]="three" >>>print example_dict >>> {'trois': 'three', 'une': 'one', 'deux': 'two'}
Когда мы распечатали наш словарь, мы видим, что предметы не совсем в порядке, которые мы их добавили, в любом случае, поэтому они также называют неупорядоченными словарями, но это не проблема вообще, потому что словари не проиндексированы целыми числами, но они Используйте клавиши для поиска их соответствующих значений. Давайте попробуем доступ к некоторым элементам в наших словарях
>>>example_dict["une"] 'one' #the key "une" maps to the value "one" >>>example_dict["trois"] 'three' #the key "trois" maps to the value "three"
Если вы попробуете это с помощью ключа, который не в словаре, вы получите keyError
>>>example_dict["quarte"] KeyError: 'quarte' #A keyError is raised
Также мы можем знать количество пар клавишных пар в наших словарях с функцией Len ()
>>>len(example_dict) 3 # we have three items in our dictionary
Есть некоторые функциональные возможности, добавленные в словари Python, они называются методами. Если вы хотите узнать все методы, которые встроены в словари Python, вы будете использовать Функция DIR ()
>>>dir(example_dict) '__class__', '__cmp__', '__contains__', '__delattr__', '__delitem__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'has_key', 'items', 'iteritems', 'iterkeys', 'itervalues', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values', 'viewitems', 'viewkeys', 'viewvalues']
Позвольте сказать, что мы хотели видеть/получить все значения или, возможно, все ключи в нашем словаре, есть методы для этого
>>>example_dict.keys() ["trois", "une", "deux"] # returns a list of all of the keys in our dictionary >>>example_dict.values() ['three', 'one', 'two'] # returns a list of all the values in our dictionary The copy method
Чтобы скопировать словарь в другой словарь, это можно сделать с помощью метода копирования
>>>example_dict1 = example_dict.copy{} >>>print example_dict1 {'trois': 'three', 'une': 'one', 'deux': 'two'} # a new dictionary
Этот метод полезен, потому что если вы попытаетесь скопировать словарь, используя оператор равенства, вы просто ссылаетесь на этот словарь, и любые изменения, сделанные в этом словаре, также будут сделаны на новый.
И если мы хотели знать, существует ли ключ в нашем словаре, это также супер легко
>>>"une" in example_dict True # "Une" exists in oor dictionary >>>"cinq" in example_dict False # "cinq" is not in our dictionary
Это также может быть сделано с HAS_KEY метод
>>>example_dict.has_key("une") True >>>example_dict.has_key("cinq") False
Поскольку словари – это коллекция предметов, которые они могут итерации, давайте посмотрим на некоторые способы повторения словарей. Скажем, мы хотели, чтобы мы хотели потери только над всеми ключами, ценностями или элементами Python предоставляет некоторые встроенные методы для них.
>>>keys = example_dict.iterkeys() #The iterkeys method will return an iterator over the dictionary's key >>>for key in keys: print key trois une deux #Thats all the keys in our dictionary >>>values = example_dict.itervalues() #Itervalues returns an iterator over our dictionary's values >>>for value in values: print value three one two #all the values in our dictionary >>>items = example_dict.iteritems() #iteritems return an iterator over our dictionary's (key, value) pairs >>> for k, v in items: print k, "-->", v trois --> three une --> one deux --> two #our whole collection of key and values
Еще одна крутая особенность словарей – это хороший способ, которым они могут быть использованы для форматирования строки
>>> s = "After %(une)s comes %(deux)s then %(trois)s" %example_dict # %s for string >>> print s After one comes two then three # our output shows the corresponding values
Наконец-то давайте посмотрим, как изменить и удалить элементы в нашем словаре
>>>example_dict["une"] =1 >>>example_dict["deux"] = 2 >>>example_dict["trois"] = 3 >>>print example_dict {'trois': 3, 'une': 1, 'deux': 2} # here we've changed the values of our keys
Чтобы удалить элементы формирования нашего словаря Мы будем использовать метод POP, который занимает в качестве аргумента, ключ элемента, который мы хотели бы удалить
>>>example_dict.pop("une") 1 # 1 is the value of "une"
Давайте проверим, что он был удален
>>>print example_dict {'trois': 3, 'deux': 2} # the key "une" and its value no longer exist in our dictionary
Мы также могли бы использовать оператор DEL для выполнения удаления
>>>del example_dict["deux"] >>>print example_dict {'trois': 3} # the key "deux" and its value has been deleted from our dictionary.
Есть еще многое, что можно сделать с помощью словарей Python, это просто игривое введение. Счастливый взлом.