Словник Python - це структура даних, аналогічна асоціативному масиву, знайденому в інших мовах програмування. Масив або список індексують елементи по позиції. Словник, з іншого боку, індексує елементи за ключами, які можуть бути рядками. Думайте про словник як про неупорядковані набори пар ключ-значення.
- Створення словника
- Зазначення пар ключ-значення
- Масив кортежів ключ-значення
- Робота зі словником Python
- Доступ до елементів словника Python
- Перевірка на існування
- Модифікуючі елементи
- Вилучення елементів
- Цикли зі словниками Python
- Зациклювання на клавішах
- Цикл за парами ключ-значення
- Перебір значень
- Один з випадків, коли можна працювати з цими масивами, - це коли вам потрібно видаляти елементи зі словника, коли ви стикаєтеся з небажаними елементами. Робота з ітератором при зміні словника може викликати RuntimeError.
- Як ви використовуєте словники Python?
У цій статті ми познайомимо вас з роботою зі словником Python.
Створення словника
Є кілька способів створення словника Python. Найпростіша використовує фігурну ініціалізацію, з синтаксисом, що нагадує JSON
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}
Ви також можете використовувати цифри як ключі. Тим не менш, будьте обережні, використовуючи числа з плаваючою комою як ключі, оскільки комп'ютер зберігає їх як наближення.
rain_percent = { 1980: '17%', 1981: '15%', 1982: '10%'} print rain_percent print rain_percent[1980] # prints {1980: '17%', 1981: '15%', 1982: '10%'} 17%
Зазначення пар ключ-значення
Ви також можете створити та ініціалізувати словник, використовуючи пари «Ім'я-значення» як аргументи ключових слів для конструктора dict ().
population = dict(California=37253956, Colorado=5029196, Connecticut=3574097, Delaware=897934) print population # prints {'Connecticut': 3574097, 'Delaware': 897934, 'California': 37253956, 'Colorado': 5029196}
Масив кортежів ключ-значення
Ще одним способом створення словника є використання масиву кортежів ключ-значення. Ось той же приклад, що і вище.
pairs = [('California', 37253956), ('Colorado', 5029196), ('Connecticut', 3574097), ('Delaware', 897934)] population = dict(pairs) print population # prints {'Connecticut': 3574097, 'Delaware': 897934, 'California': 37253956, 'Colorado': 5029196}
Дикт Розуміння
Розуміння Dict забезпечує класний синтаксис для ініціалізації dict, якщо ви можете обчислити значення на основі ключів. Наступне ініціалізує набір чисел і квадратних значень для діапазону чисел.
print {x: x**2 for x in xrange(10, 20)} # prints {10: 100, 11: 121, 12: 144, 13: 169, 14: 196, 15: 225, 16: 256, 17: 289, 18: 324, 19: 361}
Як це працює? Остання частина (для x у xrange (10, 20)) повертає діапазон чисел у вказаному діапазоні. Частина розуміння слова ({x: x * * 2..}) зациклюється на цьому діапазоні і ініціалізує словник.
Робота зі словником Python
Що ви можете робити зі словниками після їх створення? Ви можете отримати доступ до елементів, оновити значення, вилучити елементи тощо.
Доступ до елементів словника Python
Отримайте доступ до елемента dict, використовуючи ключ у квадратних дужках, так само, як якщо б ви працювали з масивом або списком.
print population['Delaware'] # prints 897934
Якщо ключ є числом, вам не потрібні лапки. Потім вираз виглядає як індексування списку або масиву.
print rain_percent[1980] # prints 17%
Тип ключа при доступі до нього повинен збігатися з тим, що зберігається в словнику Python. Наступне спричиняє помилку, оскільки зберігаються ключі є числами, а ключ доступу - рядком.
x = '1980' print rain_percent[x] # results in 1 x = '1980' ----> 2 print rain_percent[x] KeyError: '1980'
Доступ до неіснуючого ключа є помилкою.
rain_percent = { 1980: '17%', 1981: '15%', 1982: '10%'} print rain_percent[1983] # prints 1 rain_percent = { 1980: '17%', 1981: '15%', 1982: '10%'} ----> 2 print rain_percent[1983] KeyError: 1983
Щоб отримати доступ до ключа і надати типове значення, якщо співставлення не існує, використовуйте метод get () зі значенням за замовчуванням як другий аргумент.
print rain_percent.get(1985, '0%') # prints 0%
Перевірка на існування
Що якщо ви хочете перевірити наявність ключа, не намагаючись отримати до нього доступ (і, можливо, зіткнутися з KceError, як описано вище)? Ви можете використовувати ключове слово in в ключі форми в dct, яке повертає логічне значення.
print 1980 in rain_percent print '1980' in rain_percent # prints True False
Скасуйте умову (тобто переконайтеся, що ключ відсутній у словнику Python), використовуючи ключ форми, відсутній у dct. Це еквівалентно стандартному запереченню Python, а не ключу в dct.
print 1980 not in rain_percent print 1985 not in rain_percent # prints False True
Модифікуючі елементи
Змініть значення, присвоївши потрібний ключ.
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27} users['age'] = 29 print users # prints {'lastname': 'Smith', 'age': 29, 'firstname': 'John'}
Використовуйте той самий синтаксис, щоб додати новий відображення до словника Python.
users['dob'] = '15-sep-1971' print users # prints {'dob': '15-sep-1971', 'lastname': 'Smith', 'age': 29, 'firstname': 'John'}
Оновіть декілька елементів словника за один раз, використовуючи метод update ().
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27} users.update({'age': 29, 'dob': '15-sep-1971'}) print users # prints {'dob': '15-sep-1971', 'lastname': 'Smith', 'age': 29, 'firstname': 'John'}
Встановіть типове значення для ключа за допомогою setdefault (). Цей метод встановлює значення для ключа, якщо порівняння не існує. Повертає поточне значення.
# does not change current value print users.setdefault('firstname', 'Jane') # prints John # sets value print users.setdefault('city', 'NY') # prints NY # Final value print users # prints {'lastname': 'Smith', 'age': 27, 'firstname': 'John', 'city': 'NY'} - # does not change current value print users.setdefault('firstname', 'Jane') # prints John # sets value print users.setdefault('city', 'NY') # prints NY # Final value print users # prints {'lastname': 'Smith', 'age': 27, 'firstname': 'John', 'city': 'NY'}
Вилучення елементів
Вилучіть показ у словнику за допомогою оператора del. Цей оператор нічого не повертає.
Якщо ключ не існує у словнику, ви зустрінете KceError.
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27} del users['age'] print users # prints {'lastname': 'Smith', 'firstname': 'John'}
Замість цього використовуйте метод pop (), коли ви хочете повернути віддалене значення.
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27} print users.pop('age') print users # prints 27 {'lastname': 'Smith', 'firstname': 'John'}
Що робити, якщо ви хочете вилучити ключ, якщо він існує, якщо він не існує? Ви можете використовувати pop () і вказати None для другого аргументу наступним чином:
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27} users.pop('foo', None) print users # prints {'lastname': 'Smith', 'age': 27, 'firstname': 'John'}
І тут є один рядок для вилучення набору ключів зі словника, не викликаючи помилки на неіснуючих ключах.
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27, 'dob': '15-sep-1971'} map(lambda x: users.pop(x, None),['age', 'foo', 'dob']) print users
Хочете вилучити всі ключі зі словника? Використовуйте метод clear ().
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27} users.clear() print users # prints {}
Цикли зі словниками Python
Python надає безліч методів для створення циклів. над записами словника. Виберіть один, щоб задовольнити ваші потреби.
Зациклювання на клавішах
- Найпростіший метод для обробки ключів (і, можливо, значень) у послідовності використовує цикл у формі:
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27} for k in users: print k, '=>', users[k] # prints lastname => Smith age => 27 firstname => John
- Використання методу iterkeys () працює так само, як і вище. Виберіть, яку форму ви бажаєте використовувати.
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27} for k in users.iterkeys(): print k, '=>', users[k] # prints lastname => Smith age => 27 firstname => John
- Третій метод вилучення і обробки ключів у циклі включає використання вбудованої функції iter ().
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27} for k in iter(users): print k, '=>', users[k] # prints lastname => Smith age => 27 firstname => John
- Коли вам потрібен індекс ключа, використовуйте вбудовану функцію enumerate (), як показано нижче.
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27} for index, key in enumerate(users): print index, key, '=>', users[k] # prints 0 lastname => John 1 age => John 2 firstname => John
Цикл за парами ключ-значення
- Якщо ви хочете отримати кожну пару ключ-значення одним викликом, використовуйте iteritems ().
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27} for k, v in users.iteritems(): print k, '=>', v # prints lastname => Smith age => 27 firstname => John
Перебір значень
- Метод itervalues ^ () можна використовувати для перебору всіх значень у словнику. Хоча цей метод виглядає як цикл з використанням values ^ (), він більш ефективний, оскільки не витягує всі значення одночасно.
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27} for value in users.itervalues(): print value # prints Smith 27 John
Вилучення масивів
Наступні методи описують вилучення різної інформації зі словника Python у вигляді масиву. Отриманий масив можна зациклити, використовуючи звичайні конструкції Python. Але майте на увазі, що масив, який повертається, може бути більшим залежно від розміру словника. Таким чином, обробка цих масивів може бути більш дорогою (з точки зору пам'яті), ніж використання методів ітератора, описаних вище.
Один з випадків, коли можна працювати з цими масивами, - це коли вам потрібно видаляти елементи зі словника, коли ви стикаєтеся з небажаними елементами. Робота з ітератором при зміні словника може викликати RuntimeError.
- Метод items () повертає масив кортежів ключ-значення. Ви можете перебрати ці пари ключ-значення, як показано:
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27} for k, v in users.items(): print k, '=>', v # prints lastname => Smith age => 27 firstname => John
- Отримати всі ключі у словнику за допомогою методу keys ().
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27} print users.keys() # prints ['lastname', 'age', 'firstname']
Використовуйте повернений масив для циклічного перебору ключів.
for k in users.keys(): print k, '=>', users[k] # prints lastname => Smith age => 27 firstname => John
- Подібним чином використовуйте метод (), щоб отримати всі значення у словнику.
for value in users.values(): print value # prints Smith 27 John
Як ви використовуєте словники Python?
У цій статті ми постаралися охопити найбільш поширені варіанти використання словників python. Обов'язково ознайомтеся з усіма іншими нашими статтями Python. для отримання додаткових порад щодо Python Якщо у вас є інші варіанти використання, які ви вважаєте за потрібне, повідомте нам про це в коментарях нижче!
