Python. Робота зі словниками. Вбудовані функції list(), zip(). Обхід словника. Генератори словників. Сортування. Поєднання словників з множинами




Робота зі словниками. Вбудовані функції list(), zip(). Обхід словника. Генератори словників. Сортування. Поєднання словників з множинами


Зміст


Пошук на інших ресурсах:

1. Вбудована функція list(). Приклад застосування зі словниками

Використання вбудованої функції list() дозволяє отримувати списки значень, ключів та пар (ключ:значення). Щоб сформувати відповідний список з допомогою list() потрібно використати один з наступних методів:

  • метод values() дозволяє отримати список значень словника;
  • метод keys() дозволяє отримати список ключів словника;
  • метод items() дозволяє отримати список пар (ключ:значення).

Більш детально про використання методів values(), keys(), items() описується тут.

Приклад.

# Робота зі словниками
# Вбудований метод list()

# Вихідний словник
Figures = { 1:'Rectangle', 2:'Triangle', 3:'Circle' }

# 1. Отримати список значень словника
values = list(Figures.values())
print(values) # ['Rectangle', 'Triangle', 'Circle']

# 2. Отримати список ключів словника
keys = list(Figures.keys()) # keys = [1, 2, 3, 4]
print(keys)

# 3. Отримати список пар (ключ:значення)
pairs = list(Figures.items())
print(pairs) # [(1,'Rectangle'),(2,'Triangle'),(3,'Circle')]

 

2. Вбудована функція zip(). Приклад створення словника

Функція zip() дозволяє створити словник шляхом об’єднання списків ключів та значень.

Приклад.

# Словники. Функція zip()

# Створення словника з списків ключів та значень
Numbers = dict(zip([1, 2, 3], ['One', 'Two', 'Three']))
print(Numbers) # {1: 'One', 2: 'Two', 3: 'Three'}

 

3. Обхід словника з допомогою циклу for. Приклад

У прикладі демонструється обхід словника з допомогою циклу for і виведення усіх пар (ключ:значення).

Приклад.

# Робота зі словниками
# Обхід словника з допомогою циклу for

# Вихідний словник
Months = { 1:'Jan', 2:'Feb', 3:'Mar',
           4:'Apr', 5:'May', 6:'Jun',
           7:'Jul', 8:'Aug', 9:'Sep',
           10:'Oct', 11:'Nov', 12:'Dec' }

# Цикл for обходу словника
# у циклі mn - ключ, Months[mn] - значення
for mn in Months:
    print(mn, ': ', Months[mn])

Результат виконання програми

1 : Jan
2 : Feb
3 : Mar
4 : Apr
5 : May
6 : Jun
7 : Jul
8 : Aug
9 : Sep
10 : Oct
11 : Nov
12 : Dec


 

4. Використання словників для розріджених структур даних. Приклад

Словники можуть ефективно використовуватись для представлення структур даних, інформація в яких є розрідженою. Прикладами таких даних можуть бути двовимірні масиви, в яких тільки декілька елементів мають визначені значення.

Приклад. У прикладі продемонстровано представлення розрідженої матриці чисел у вигляді словника. Нехай задана матриця

Розріджена матриця чисел,

яку потрібно представити у вигляді словника. Розв’язок задачі наступний:

# Словники. Представлення розріджених структур даних

# Матриця M
M = {} # створити пустий словник
M[(0, 1)] = 1 # ключ=(0,1): значення=1
M[(1, 2)] = 3 # пара (ключ:значення) = ((1,2):3)
M[(2, 0)] = 2 # пара (ключ:значення) = ((2,0):2)

print(M) # {(0, 1): 1, (1, 2): 3, (2, 0): 2}

У вищенаведеному прикладі ключами словника є кортежі, що містять координати непустих елементів. Так значення ключа (2, 0) означає рядок 2, стовпець 0.

 

5. Створення словників з допомогою генераторів словників. Приклади

Словники можна створювати з використанням генераторів словників. У цьому випадку використовується один з нижченаведених способів:

  • згенерувати словник на основі заданого виразу;
  • згенерувати словник на основі ітерованого об’єкту;
  • ініціалізувати словник зі списків ключів;
  • згенерувати словник з використанням функції zip().

У прикладі демонструється використання усіх способів.

Приклад.

# Словники. Генератори словників

# 1. Згенерувати словник на основі заданого виразу
# Генеруються пари (ключ: значення) = (i: 5*i)
A = { i: i*5 for i in [10,20,30,40] }
print(A) # {10: 50, 20: 100, 30: 150, 40: 200}

# 2. Згенерувати словник на основі ітерованого об'єкту (рядка)
s = 'Hello'
B = { sym: sym*3 for sym in s } # пара (sym:sym*3)
print(B) # {'H': 'HHH', 'e': 'eee', 'l': 'lll', 'o': 'ooo'}

numbers = [ 15, 25, 30 ]
C = { num: str(num) for num in numbers }
print(C) # {15: '15', 25: '25', 30: '30'}

# 3. Ініціалізація словника зі списків ключів
# Заповнити список ключів значенням, введеним з клавіатури
value = int(input('Input value: '))
listKeys = [ 1, 2, 3, 4 ]
D = { lk:value for lk in listKeys }
print(D)

# Заповнити список ключів значенням None
value = None
listKeys = [ 'a', 'b', 'c' ]
E = { lk:value for lk in listKeys }
print(E) # {'a': None, 'b': None, 'c': None}

# 4. Згенерувати словник з використанням функції zip()
WMonths = [ 'Dec', 'Jan', 'Feb']
NumMonths = [ 12, 1, 2 ]
F = { nm:wm for (nm,wm) in zip(NumMonths,WMonths) }
print(F) # {12: 'Dec', 1: 'Jan', 2: 'Feb'}

 

6. Сортування словника. Приклад

Як відомо, ключі в словнику зберігаються у довільному порядку. Якщо виникає необхідність відсортувати словник за ключами то для цього можна використати метод sort(), який використовується для списків. Для цього попередньо потрібно перетворити представлення ключів у список.

Приклад.

# Словники. Сортування за ключами

# Вихідний словник
A = { 'f':10, 'a':2, 'c':17 }

# Сортування за ключами
# 1. Отримати представлення ключів
ak = A.keys() # ak = dict_keys(['f', 'a', 'c'])

# 2. Конвертувати представлення ak в список
list_ak = list(ak) # list_ak = ['f', 'a', 'c']

# 3. Відсортувати список ключів - функція sort()
list_ak.sort() # ['a', 'c', 'f']

# 4. Вивести перелік (ключ:значення)
# у посортованому порядку за ключами,
# сформувати новий словник
B = {}
for k in list_ak:
    print('(', k, ': ', A[k], ')')
    B[k] = A[k]

print(B) # {'a': 2, 'c': 17, 'f': 10}

 

7. Приклад використання списків ключів словника в операціях над множинами

На основі ключів словника можна утворювати списки. Ці списки ключів можуть бути використані в операціях над множинами, які утворюють нову множину. Іншими словами, можна змішувати різні об’єкти представлень (множини, словники) між собою з допомогою відповідних операцій.

Для того, щоб ключі можна було використовувати в операціях над множинами, потрібно попередньо конвертувати їх у списки з допомогою методу keys(). Більш детально про застосування методу keys() описується тут.

Приклад. У прикладі продемонстровано взаємодію словників та множин з допомогою операцій над множинами |, &, ^.

# Словники. Поєднання словників і множин

# Заданий словник
A = { 1:'One', 2:'Two', 3:'Three', 4:'Four', 5:'Five' }

# Поєднання відображення ключів та множин,
# утворюється нова множина

# 1. Отримати відображення ключів
keys = A.keys() # keys = dict_keys([1, 2, 3, 4, 5])

# 2. Сформувати нову множину ключів яка містить число 2
B = keys & {2} # B = {2} - нова множина

# 3. Сформувати нову множину ключів, яка містить числа 3, 5
C = keys ^ {3, 5} # {1, 2, 4}

# 4. Додати до множини ключів числа 8, 11
D = keys | { 8, 11 } # D = {1, 2, 3, 4, 5, 8, 11}

 


Зв’язані теми