Рубрики
Без рубрики

Работа с словарями в Python

Нежное введение в словари Python

Автор оригинала: 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, это просто игривое введение. Счастливый взлом.