Данная статья была впервые опубликована на паблике "Юантианган", просьба указывать источник для перепечатки, спасибо!
предисловие
Словарь Python может содержать одну пару ключ-значение для краткости или миллионы для длинных. Поэтому мы не собираемся перебирать словарь. Поскольку словари Python состоят из последовательности пар ключ-значение, мы можем перебирать все пары ключ-значение, ключи или значения словаря.
1. Перебрать все пары ключ-значение в словаре
Начнем снова со студенческого словаря:
student = {'num': '123456', 'name': 'kelvin', 'age': 18}
В предыдущей статье мы узнали, как получить доступ к информации о любом элементе студенческого словаря, но что, если мы хотим получить доступ ко всей информации в словаре?
мы можем использоватьforЦикл для перебора этого словаря:
student = {'num': '123456', 'name': 'kelvin', 'age': 18}
for key, value in student.items():
print("\nKey: " + key)
print("Value: " + str(value)) # 因为age对应的是数字类型,所以用str()方法将其转化成字符串
Как видно из кода, мы объявляем две переменныеkeyиvalueдля хранения ключа и значения в паре ключ-значение.Их можно назвать произвольно.
Можно даже написать:
for a, b in student.items():
Можно так писать, но ради славы все же рекомендую звонитьkeyиvalue.
Зоркие друзья могут заметитьinДалее следует не сам словарь, аstudent.items(), который возвращает список пар ключ-значение, на самом деле, если выprint(student.items())Если это так, вывод выглядит следующим образом:
dict_items([('num', '123456'), ('name', 'kelvin'), ('age', 18)])
Видно, что это действительно список кортежей, составленных из пар ключ-значение.
Следующий,forЦикл сохраняет каждый кортеж пары ключ-значение по очереди в указанные две переменные (keyиvalue).
Запустите приведенный выше код, который просматривает студенческий словарь:
Примечание. При просмотре словаря пары ключ-значение могут возвращаться в порядке, отличном от порядка их сохранения. На самом деле это никак не влияет на наше программирование.
2. Перебрать все ключи словаря
Иногда нам может быть все равно, какое значение, мы можем использовать методkeys(),keys()Метод возвращает список ключей.
student = {'num': '123456', 'name': 'kelvin', 'age': 18}
for key in student.keys():
print(key)
Приведенный выше код распечатает все ключи в словаре:
Сравните с кодом, который перебирает все пары ключ-значение, вы найдетеforза которым следует только одна переменная, иinОбъект, пройденный после ключевого словаstudent.keys(), мы пытаемсяprint(student.keys())можно увидетьkeys()метод возвращаетсписок ключей.
мы можем даже поставитьkeys()метод опущен, потому что при обходе словаря, если вы находитесь вforПосле объявления только одной переменной Python будет проходить по всем ключам по умолчанию и по очереди назначать ключи этой переменной.
Поэтому наш код можно записать и так:
student = {'num': '123456', 'name': 'kelvin', 'age': 18}
for key in student:
print(key)
Выход такой же, как указано выше.
Python предоставляет очень гибкий синтаксис, и вы вольны выбирать, как вам нравится его писать.
3. Перебрать все значения в словаре
Иногда нам просто нужно перебрать все значения в словаре и не важно какой ключ, мы можем использовать методvalues(),values()Метод возвращает список значений.
Если мы хотим распечатать все значения в студенческом словаре:
student = {'num': '123456', 'name': 'kelvin', 'age': 18}
for value in student.values():
print(value)
Запустив этот код, эффект будет следующим:
Он распечатывает все значения в студенческом словаре.
Ключом к возможности распечатать все значения являетсяstudent.values()Метод возвращает список значений.
Python перебирает этот список значений и последовательно присваивает значенияvalueпеременная, а затем распечатать вывод.
заключительные замечания
В этой статье в основном объясняются три способа обхода словаря в Python, которые должны быть относительно простыми.
Автор всегда старался объяснить сложные и трудные понятия в доступной для понимания форме, но из-за личных способностей это не может быть полностью учтено. Если у вас есть какие-либо сомнения относительно содержания статьи, пожалуйста, отправьте мне личное сообщение, чтобы связаться со мной.