Словники.

Перераховані структури даних, що визначаються у вигляді пар ключ - значення всередині фігурних дужок через двокрапку та розділених комою.

Доступ до значень елементів словника за ключем.

#!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}

print dict['Name']

Ключ може бути числом.

dict = {1: 'one', 2: 'two'}
print dict[1]
print dict[3]

Traceback (most recent call last):
  File "dict_ex.py", line 3, in <module>
    print dict[3]
KeyError: 3

Безпечне вилучення.

print dict.get(3,'no')

Зміна словника

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}

dict['Age'] = 8; # update existing entry
dict['School'] = "DPS School"; # Add new entry

Видалення елементів із словника.

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}

del dict['Name']; # remove entry with key 'Name'
dict.clear();     # remove all entries in dict
del dict ;        # delete entire dictionary

Ключ має бути незмінним об’єктом.

dict = {['Name']: 'Zara', 'Age': 7}


Traceback (most recent call last):
   File "test.py", line 3, in <module>
      dict = {['Name']: 'Zara', 'Age': 7};
TypeError: list objects are unhashable

Вбудовані функції роботи зі словником..

Створення словника.

md = dict(name='Vova', age=23)

print(md)

Довжина словника.

len(dict)

Строкове уявлення.

str(dict)
type(variable)

Створення словника з 2 списків функцією zip.

d1 = ['one', 'two', 'three']
d2 = [1, 2, 3]
d3 = dict(zip(d1,d2))
print(d3

>> {'three': 3, 'two': 2, 'one': 1}

Вбудовані методи словників.

dict.clear() # очистить
dict.copy() # склонировать (сделать копию)




dict.fromkeys(seq[, value])

Create a new dictionary with keys from seq and values set to value.

seq = ('name', 'age', 'sex')
val = (10,20,30)
dict = dict.fromkeys(seq,val)
print dict
>> {'age': (10, 20, 30), 'name': (10, 20, 30), 'sex': (10, 20, 30)}

dict.get(key, default=None)

Проверка на существование ключа.

dict.has_key(key)  # only for Python 2!

if 'key' in md:
    print('Yes')
else:
    print('No')

Отримання всіх ключів словника.

print(dict.keys())

>> dict_items([('two', [1, 2, 3]), ('one', [1, 2, 3]), ('three', [1, 2, 3])]) # python 3
>> [('three', [1, 2, 3]), ('two', [1, 2, 3]), ('one', [1, 2, 3])] # python 2

Отримання всіх значень словника.

print(dict.values())
>> dict_values([[1, 2, 3], [1, 2, 3], [1, 2, 3]]) # python 3
>> [[1, 2, 3], [1, 2, 3], [1, 2, 3]] # python 2

Отримання всіх ключів значень словника.

print(dict.items())

>> dict_items([('two', [1, 2, 3]), ('one', [1, 2, 3]), ('three', [1, 2, 3])]) # python 3
>> [('three', [1, 2, 3]), ('two', [1, 2, 3]), ('one', [1, 2, 3])] # python 2

Обхід словника у циклі.

for key, value in d.iteritems(): # For Python 2.x

for key, value in d.items(): $ for Python 3.x

Альтернативний спосіб обходу за ключами dict.keys().

for key in d3.keys():
    print(d3[key])

Масове оновлення словника словника.

dict.update(dict2)

Функція НЕ повертає, а змінює словник.

Перетворення словника на рядок json.

import json

json.dumps({"one": 1, "two": '2'})

Запишем в файл.

# write into file
f = open('tst.txt','w+')
f.write(s1)
f.close()

Для запису рядка її потрібно перетворювати з об’єкта словника на рядок функцією dumps.

Вважаємо з файлу.

# read from file
f = open('tst.txt','r')
st = f.read()
f.close()
st_dict = json.loads(st)
print(st_dict['two'])

Для роботи зі словником його необхідно перетворювати з рядка на об’єкт ф-цією loads.