Речник на Python (с примери)

В този урок ще научите всичко за речниците на Python; как се създават, достъп, добавяне, премахване на елементи от тях и различни вградени методи.

Видео: Речници на Python за съхраняване на двойки ключ / стойност

Речникът на Python е неподредена колекция от елементи. Всеки елемент от речника има key/valueдвойка.

Речниците са оптимизирани за извличане на стойности, когато ключът е известен.

Създаване на речник на Python

Създаването на речник е толкова просто, колкото поставянето на елементи във фигурни скоби, ()разделени със запетаи.

Елементът има a keyи съответстващ, valueкойто се изразява като двойка ( ключ: стойност ).

Въпреки че стойностите могат да бъдат от всякакъв тип данни и могат да се повтарят, ключовете трябва да са от неизменяем тип (низ, число или кортеж с неизменяеми елементи) и да са уникални.

 # empty dictionary my_dict = () # dictionary with integer keys my_dict = (1: 'apple', 2: 'ball') # dictionary with mixed keys my_dict = ('name': 'John', 1: (2, 4, 3)) # using dict() my_dict = dict((1:'apple', 2:'ball')) # from sequence having each item as a pair my_dict = dict(((1,'apple'), (2,'ball')))

Както можете да видите отгоре, ние също можем да създадем речник, използвайки вградената dict()функция.

Достъп до елементи от речника

Докато индексирането се използва с други типове данни за достъп до стойности, речникът използва keys. Ключовете могат да се използват или в квадратни скоби, ()или с get()метода.

Ако използваме квадратните скоби (), KeyErrorсе повдига, в случай че ключът не бъде намерен в речника. От друга страна, get()методът се връща, Noneако ключът не е намерен.

 # get vs () for retrieving elements my_dict = ('name': 'Jack', 'age': 26) # Output: Jack print(my_dict('name')) # Output: 26 print(my_dict.get('age')) # Trying to access keys which doesn't exist throws error # Output None print(my_dict.get('address')) # KeyError print(my_dict('address'))

Изход

 Jack 26 None Traceback (последно последно обаждане): Файл "", ред 15, в печат (my_dict ('address')) KeyError: 'address'

Промяна и добавяне на елементи от речника

Речниците са променливи. Можем да добавяме нови елементи или да променяме стойността на съществуващите елементи с помощта на оператор за присвояване.

Ако ключът вече присъства, тогава съществуващата стойност се актуализира. В случай че ключът не присъства, към речника се добавя нова двойка ( ключ: стойност ).

 # Changing and adding Dictionary Elements my_dict = ('name': 'Jack', 'age': 26) # update value my_dict('age') = 27 #Output: ('age': 27, 'name': 'Jack') print(my_dict) # add item my_dict('address') = 'Downtown' # Output: ('address': 'Downtown', 'age': 27, 'name': 'Jack') print(my_dict)

Изход

 ('name': 'Jack', 'age': 27) ('name': 'Jack', 'age': 27, 'address': 'Downtown')

Премахване на елементи от речника

Можем да премахнем определен елемент от речник с помощта на pop()метода. Този метод премахва елемент с предоставения keyи връща value.

В popitem()метод може да се използва за отстраняване на и да се върнете произволна (key, value)точка чифт от речника. Всички елементи могат да бъдат премахнати наведнъж, използвайки clear()метода.

Също така можем да използваме delключовата дума за премахване на отделни елементи или на целия речник.

 # Removing elements from a dictionary # create a dictionary squares = (1: 1, 2: 4, 3: 9, 4: 16, 5: 25) # remove a particular item, returns its value # Output: 16 print(squares.pop(4)) # Output: (1: 1, 2: 4, 3: 9, 5: 25) print(squares) # remove an arbitrary item, return (key,value) # Output: (5, 25) print(squares.popitem()) # Output: (1: 1, 2: 4, 3: 9) print(squares) # remove all items squares.clear() # Output: () print(squares) # delete the dictionary itself del squares # Throws Error print(squares)

Изход

 16 (1: 1, 2: 4, 3: 9, 5: 25) (5, 25) (1: 1, 2: 4, 3: 9) () Traceback (последно последно обаждане): Файл "", ред 30, в печат (квадрати) NameError: името "квадрати" не е дефинирано

Методи на речника на Python

Методите, които се предлагат с речник, са представени по-долу. Някои от тях вече са използвани в горните примери.

Метод Описание
изчисти () Премахва всички елементи от речника.
копие() Връща плитко копие на речника.
fromkeys (seq (, v)) Връща нов речник с ключове от seq и стойност, равна на v (по подразбиране на None).
get (ключ (, d)) Връща стойността на ключа. Ако ключът не съществува, връща d (по подразбиране е None).
елементи () Върнете нов обект от елементите на речника във формат (ключ, стойност).
бутони () Връща нов обект от ключовете на речника.
поп (клавиш (, d)) Премахва елемента с ключа и връща стойността му или d, ако ключът не бъде намерен. Ако d не е предоставено и ключът не е намерен, той се повдига KeyError.
popitem () Премахва и връща произволен елемент ( ключ, стойност ). Повишава се, KeyErrorако речникът е празен.
setdefault (ключ (, d)) Връща съответната стойност, ако ключът е в речника. Ако не, вмъква ключа със стойност d и връща d (по подразбиране е None).
актуализация ((друго)) Актуализира речника с двойките ключ / стойност от други, като презаписва съществуващите ключове.
стойности() Връща нов обект от стойностите на речника

Ето няколко примерни случая на използване на тези методи.

 # Dictionary Methods marks = ().fromkeys(('Math', 'English', 'Science'), 0) # Output: ('English': 0, 'Math': 0, 'Science': 0) print(marks) for item in marks.items(): print(item) # Output: ('English', 'Math', 'Science') print(list(sorted(marks.keys())))

Изход

 ('Math': 0, 'English': 0, 'Science': 0) ('Math', 0) ('English', 0) ('Science', 0) ('English', 'Math', ' Наука ')

Разбиране на речника на Python

Разбирането на речника е елегантен и кратък начин за създаване на нов речник от итерация в Python.

Разбирането на речника се състои от двойка изрази ( ключ: стойност ), последвана от forизраз в къдрави скоби ().

Ето пример за създаване на речник, като всеки елемент е чифт число и неговият квадрат.

 # Dictionary Comprehension squares = (x: x*x for x in range(6)) print(squares)

Изход

 (0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25)

Този код е еквивалентен на

 squares = () for x in range(6): squares(x) = x*x print(squares)

Изход

 (0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25)

A dictionary comprehension can optionally contain more for or if statements.

An optional if statement can filter out items to form the new dictionary.

Here are some examples to make a dictionary with only odd items.

 # Dictionary Comprehension with if conditional odd_squares = (x: x*x for x in range(11) if x % 2 == 1) print(odd_squares)

Output

 (1: 1, 3: 9, 5: 25, 7: 49, 9: 81)

To learn more dictionary comprehensions, visit Python Dictionary Comprehension.

Other Dictionary Operations

Dictionary Membership Test

We can test if a key is in a dictionary or not using the keyword in. Notice that the membership test is only for the keys and not for the values.

 # Membership Test for Dictionary Keys squares = (1: 1, 3: 9, 5: 25, 7: 49, 9: 81) # Output: True print(1 in squares) # Output: True print(2 not in squares) # membership tests for key only not value # Output: False print(49 in squares)

Output

 True True False

Iterating Through a Dictionary

We can iterate through each key in a dictionary using a for loop.

 # Iterating through a Dictionary squares = (1: 1, 3: 9, 5: 25, 7: 49, 9: 81) for i in squares: print(squares(i))

Output

 1 9 25 49 81

Dictionary Built-in Functions

Вградени функции като all(), any(), len(), cmp(), sorted(), и т.н. обикновено се използват с речници за извършване на различни задачи.

Функция Описание
всичко() Връща се, Trueако всички ключове на речника са True (или ако речникът е празен).
всеки () Върнете, Trueако който и да е ключ от речника е верен. Ако речникът е празен, върнете се False.
len () Върнете дължината (броя на елементите) в речника.
cmp () Сравнява елементи от два речника. (Не се предлага в Python 3)
сортирано () Върнете нов сортиран списък с ключове в речника.

Ето няколко примера, които използват вградени функции за работа с речник.

 # Dictionary Built-in Functions squares = (0: 0, 1: 1, 3: 9, 5: 25, 7: 49, 9: 81) # Output: False print(all(squares)) # Output: True print(any(squares)) # Output: 6 print(len(squares)) # Output: (0, 1, 3, 5, 7, 9) print(sorted(squares))

Изход

 False True 6 (0, 1, 3, 5, 7, 9)

Интересни статии...