# вызовeт ошибку, т.к. такого метода у кортежа нет: e.append(10)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'tuple' object has no attribute 'append'
Словарь — неупорядоченная коллекция произвольных объектов с доступом по ключу.
Создать словарь можно несколькими способами.
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() |
|
очистка множества |
|
|
|
|
Frozenset – полностью похож на set, но является неизменяемым типом данных.
Аналогия – списки и кортежи.
14