Материал: Разработка программных пакетов на языке Python. учебное пособие. Амоа К.А., Рындин Н.А

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

# вызовeт ошибку, т.к. такого метода у кортежа нет: e.append(10)

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

AttributeError: 'tuple' object has no attribute 'append'

2.1.4. Словари

Словарь — неупорядоченная коллекция произвольных объектов с доступом по ключу.

Создать словарь можно несколькими способами.

1.С помощью литерала словаря:

>>>a = {}

>>>a

{}

>>>b = {'key1': 'value1', 'key2': 2, 'key3': [1,2,3]}

>>>b

{'key1': 'value1', 'key3': [1, 2, 3], 'key2': 2}

2.С помощью функции dict:

>>>c = dict(key='val', spam='eggs')

>>>c

{'key': 'val', 'spam': 'eggs'}

>>>d = dict([(1, 1), (2, 4)])

>>>d

{1: 1, 2: 4}

>>>d = dict([(1, 10), (2, 20)])

>>>d

{1: 10, 2: 20}

3.С помощью метода fromkeys:

>>>e = dict.fromkeys(['a', 'b', 'c'])

>>>e

{'c': None, 'b': None, 'a': None}

>>>f = dict.fromkeys(['a', 'b', 'c'], 'initial')

>>>f

{'c': 'initial', 'b': 'initial', 'a': 'initial'}

4.С помощью генератора словарей (см. раздел Генераторы ниже):

>>>d = {i: i+i for i in range(7)}

>>>d

{0: 0, 1: 2, 2: 4, 3: 6, 4: 8, 5: 10, 6: 12}

10

Таблица 2

 

Операции со словарями

 

 

Операция

Результат

 

 

len(d)

число элементов в словаре

 

 

d[key]

возвращает элемент словаря с ключем key

 

 

d[key] = value

присваивает значение элементу словаря

 

 

del d[key]

удаляет элемент по ключу; вызывает KeyError, если

ключа нет

 

 

 

key in d

возвращает True если у словаря есть ключ key

 

 

key not in d

эквивалентно not key in d

 

 

dict.fromkeys(seq[, value])

создает новый словарь с ключами из seq и значением

value

 

 

 

 

возвращает элемент словаря с ключем key, если ключ

d.get(key[, default])

есть в словаре, иначе default; есил default не задан

возвращается None, таким образом .get() никогда не

 

 

вызывает исключение KeyError

 

 

d.items()

возвращает список пар (ключ, значение); удобно

использовать для цикла по словарю

 

 

 

d.keys()

возвращает список ключей словаря

 

 

 

если в словаре есть элемент с ключем key — удаляет его

d.pop(key[, default])

и возвращает его значение, в противном случае

возвращает default; если default не задан — вызывается

 

 

исключение KeyError

 

 

d.popitem()

удаляет и возвращает пару (ключ, значение); если

словарь пуст, возбуждает исключение KeyError;

 

помните, что словари неупорядочены

 

 

 

если ключ key есть в словаре — возвращает его

d.setdefault(key[, default])

значение; если нет — создает ключ со значением из

default и возвращает default; если default не задан

 

 

используется None

 

 

11

 

Окончание табл. 2

 

 

Операция

Результат

 

 

d.update([other])

обновляет словарь, добавляя пары (ключ, значение) из

other; существующие ключи перезаписываются;

 

возвращает None (не новый словарь!)

 

 

d.values()

возвращает копию списка значений словаря

 

 

d.copy()

возвращает копию словаря

 

 

d.crear()

удаляет все элементы из словаря

 

 

 

2.1.5. Множества

Множество — «контейнер», содержащий не повторяющиеся элементы в случайном порядке.

>>>a = set()

>>>a

set()

>>>b = set(['a', 'b', 'c', 'c', 'a'])

>>>b

{'c', 'b', 'a'}

>>>c = set('hello')

>>>c

{'h', 'o', 'e', 'l'}

>>>d = {'a', 'b', 'c', 'd'}

>>>d

{'c', 'b', 'a', 'd'}

>>>e = {i ** 2 for i in range(10)} # генератор множеств

>>>e

{0, 1, 4, 81, 64, 9, 16, 49, 25, 36}

>>>f = {} # А так получится словарь

>>>type(f)

<class 'dict'

12

Таблица 3

 

 

 

Операции с множествами

 

 

 

 

Операция

 

Эквивал

Результат

 

 

 

ент

 

 

 

 

 

 

 

 

 

 

 

 

len(s)

 

число элементов в множестве

 

 

 

x in s

 

принадлежит ли x множеству s

 

 

 

s.isdisjoint(t)

 

истина, если set и other не имеют общих элементов

 

 

 

 

 

 

s == t

все элементы set принадлежат other, все элементы other

 

 

 

принадлежат set

 

 

 

s.issubset(t)

s <= t

все элементы set входят в other

 

 

 

s.issuperset(t)

s >= t

все элементы other входят в set

 

 

 

s.union(t, …)

s | t

объединение множеств

 

 

 

s.intersection(t,

s & t

пересечение множеств

…)

 

 

 

 

 

s.difference(t, …)

s - t

вычитание множеств. возвращает множество из всех

 

 

 

элементов set, не принадлежащие ни одному из other

 

 

 

s.symmetric_differ

s ^ t

возвращает множество из элементов, встречающихся в

ence(t)

 

одном множестве, но не встречающиеся в обоих

 

 

 

s.copy()

 

копия множества

 

 

 

 

Таблица 4

Методы, изменяющие множества

 

Метод

 

 

Эквивалент

 

 

Результат

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

s.update(other, …)

 

 

s |= t

 

объединение

 

 

 

 

 

 

 

 

s.intersection_update(t)

 

 

s &= t

 

пересечение

 

 

 

 

 

 

 

 

 

13

 

 

Окончание табл. 4

Метод

Эквивалент

Результат

 

 

 

 

 

 

s.difference_update(t)

s -= t

вычитание

 

 

 

s.symmetric_difference_update(t)

s ^= t

возвращает

 

 

множество из

 

 

элементов,

 

 

встречающихся в

 

 

одном множестве, но

 

 

не встречающиеся в

 

 

обоих

 

 

 

s.add(elem)

 

добавляет элемент в

 

 

множество

 

 

 

s.remove(elem)

 

удаляет элемент из

 

 

множества; вызывает

 

 

KeyError, если

 

 

такого элемента не

 

 

существует

 

 

 

s.discard(elem)

 

удаляет элемент,

 

 

если он находится в

 

 

множестве

 

 

 

s.pop()

 

удаляет и

 

 

возвращает

 

 

произвольный

 

 

элемент из

 

 

множества; вызывает

 

 

KeyError, если

 

 

множество пустое

 

 

 

s.clear()

 

очистка множества

 

 

 

2.1.6. Frozenset

Frozenset – полностью похож на set, но является неизменяемым типом данных.

Аналогия – списки и кортежи.

14

Источник: https://studfile.net/preview/16565614/