Как перебирать словарь в Python

Введение Словари - одна из наиболее часто используемых структур данных при разработке программного обеспечения, и на то есть веские причины. Они позволяют нам хранить наши данные в аккуратных парах ключ-значение, что, в свою очередь, дает нам возможность в среднем получать доступ к нашим данным за время O (1). При использовании словаря важно знать, как его перебирать. Невозможность восстановить сохраненные данные делает их практически бесполезными. В этой статье мы увидим, как перебирать словарь Python со всеми видами

Вступление

Словари - одна из наиболее часто используемых структур данных при разработке программного обеспечения, и на то есть веские причины. Они позволяют нам хранить наши данные в аккуратных парах ключ- значение , что, в свою очередь, дает нам возможность получать доступ к нашим данным в среднем за время O(1) .

При использовании словаря важно знать, как его перебирать. Невозможность восстановить сохраненные данные делает их практически бесполезными.

В этой статье мы увидим, как перебирать словарь Python со всеми видами итераторов и циклом for

Использование метода keys ()

В словарях Python есть удобный метод, который позволяет нам легко перебирать все инициализированные ключи в словаре keys() .

Имейте в виду, что начиная с Python 3 этот метод не возвращает список, вместо этого он возвращает объект представления . Объект представления в точности соответствует названию: представление некоторых данных.

Это означает, что мы можем без проблем перебирать указанные данные, но если мы действительно хотим сохранить список ключей, нам нужно его материализовать. Это легко сделать, перенаправив предоставленный объект представления в конструктор list

Давайте посмотрим, как все это работает:

 my_dict = {'alpha': 5, 'beta': 4, 'gamma': 3} 
 
 # Here we're just 'looking' at the keys, 
 # we're not actually constructing a list 
 # out of them 
 key_view = my_dict.keys() 
 print("Key view:", key_view) 
 print("Type:", type(key_view),end="\n\n") 
 
 # Here we're materializing the keys 
 # into a list ofo keys 
 key_list = list(my_dict.keys()) 
 print("Key list:", key_list) 
 print("Type: ", type(key_list),end="\n\n") 
 
 # And as we can see, view can be easily be 
 # used for iterating over a dictionary 
 for key in my_dict.keys(): 
 print(key, ':', my_dict[key]) 

Выполнение кода дает нам следующий результат:

 Key view: dict_keys(['alpha', 'beta', 'gamma']) 
 Type: <class 'dict_keys'> 
 
 Key list: ['alpha', 'beta', 'gamma'] 
 Type: <class 'list'> 
 
 alpha : 5 
 beta : 4 
 gamma : 3 

Альтернативный способ сделать это:

 my_dict = {'alpha': 5, 'beta': 4, 'gamma': 3} 
 
 for key in my_dict: 
 print(key, ':', my_dict[key]) 

При использовании in ключевом слове в сочетании со словарем, словарь вызывает его __iter__() метод. Затем этот метод возвращает итератор, который используется для неявного просмотра ключей предоставленного словаря.

Использование метода values ()

Как и метод keys() метод values() также возвращает объект представления, но вместо перебора ключей он перебирает значения:

 my_dict = {'alpha': 5, 'beta': 4, 'gamma': 3} 
 
 # Inspecting the view of the values 
 # in the dictionary 
 key_list = list(my_dict.values()) 
 print("Value list:", key_list) 
 print("Type: ", type(key_list), end="\n\n") 
 
 for value in my_dict.values(): 
 print(value, end=" ") 

Выполнение кода дает нам следующий результат:

 Value list: [5, 4, 3] 
 Type: <class 'list'> 
 5 4 3 

В отличие от предыдущего метода, этот предоставляет только значения . Это полезно, когда вас не волнуют ключи .

Использование метода items ()

Как и keys() и values() , метод items() также возвращает объект представления, но вместо простого перебора keys или values он перебирает пары (key,value)

Давайте посмотрим, как все это работает:

 my_dict = {'alpha': 5, 'beta': 4, 'gamma': 3} 
 
 # Inspecting the view of the (key,value) pairs 
 key_list = list(my_dict.items()) 
 print("(key,value) pair list:", key_list) 
 print("Type: ", type(key_list), end="\n\n") 
 
 for item in my_dict.items(): 
 print(item, end=" ") 

Выполнение кода дает нам следующий результат:

 (key,value) pair list: [('alpha', 5), ('beta', 4), ('gamma', 3)] 
 Type: <class 'list'> 
 ('alpha', 5) ('beta', 4) ('gamma', 3) 

Чтобы немедленно назначить ключи и значения одновременно, мы можем использовать распаковку кортежа и извлекать их, используя переменные для каждого значения в кортеже:

 for key, value in my_dict.items(): 
 print(key,':',value) 

Важно отметить, что в более старых версиях Python 2, items() , keys() и values() возвращали копию данных из словаря . В Python 3 они возвращают объект представления.

Они более эффективны, поскольку обеспечивают динамическое представление, и, кроме того, если в исходный словарь вносятся какие-либо изменения, они немедленно отражаются в объекте представления (и наоборот).

Заключение

В этой статье мы рассмотрели различные способы перебора словаря Python. Сюда входят методы keys() , values() и items() с циклом for

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus