Функция zip
Функция zip:
- на вход функции передаются последовательности
zipвозвращает итератор с кортежами, в котором n-ый кортеж состоит из n-ых элементов последовательностей, которые были переданы как аргументы- например, десятый кортеж будет содержать десятый элемент каждой из переданных последовательностей
- если на вход были переданы последовательности разной длины, то все они будут отрезаны по самой короткой последовательности
- порядок элементов соблюдается
Примечание
Так как zip — это итератор, для отображение его содержимого используется list
Пример использования zip:
In [1]: a = [1, 2, 3] In [2]: b = [100, 200, 300] In [3]: list(zip(a, b)) Out[3]: [(1, 100), (2, 200), (3, 300)]
Использование zip со списками разной длины:
In [4]: a = [1, 2, 3, 4, 5] In [5]: b = [10, 20, 30, 40, 50] In [6]: c = [100, 200, 300] In [7]: list(zip(a, b, c)) Out[7]: [(1, 10, 100), (2, 20, 200), (3, 30, 300)]
Использование zip для создания словаря
Пример использования zip для создания словаря:
In [4]: d_keys = ['hostname', 'location', 'vendor', 'model', 'IOS', 'IP']
In [5]: d_values = ['london_r1', '21 New Globe Walk', 'Cisco', '4451', '15.4', '10.255.0.1']
In [6]: list(zip(d_keys, d_values))
Out[6]:
[('hostname', 'london_r1'),
('location', '21 New Globe Walk'),
('vendor', 'Cisco'),
('model', '4451'),
('IOS', '15.4'),
('IP', '10.255.0.1')]
In [7]: dict(zip(d_keys, d_values))
Out[7]:
{'IOS': '15.4',
'IP': '10.255.0.1',
'hostname': 'london_r1',
'location': '21 New Globe Walk',
'model': '4451',
'vendor': 'Cisco'}
In [8]: r1 = dict(zip(d_keys,d_values))
In [9]: r1
Out[9]:
{'IOS': '15.4',
'IP': '10.255.0.1',
'hostname': 'london_r1',
'location': '21 New Globe Walk',
'model': '4451',
'vendor': 'Cisco'}
В примере ниже есть отдельный список, в котором хранятся ключи, и словарь, в котором хранится в виде списка (чтобы сохранить порядок) информация о каждом устройстве.
Соберем их в словарь с ключами из списка и информацией из словаря data:
In [10]: d_keys = ['hostname', 'location', 'vendor', 'model', 'IOS', 'IP']
In [11]: data = {
....: 'r1': ['london_r1', '21 New Globe Walk', 'Cisco', '4451', '15.4', '10.255.0.1'],
....: 'r2': ['london_r2', '21 New Globe Walk', 'Cisco', '4451', '15.4', '10.255.0.2'],
....: 'sw1': ['london_sw1', '21 New Globe Walk', 'Cisco', '3850', '3.6.XE', '10.255.0.101']
....: }
In [12]: london_co = {}
In [13]: for k in data.keys():
....: london_co[k] = dict(zip(d_keys, data[k]))
....:
In [14]: london_co
Out[14]:
{'r1': {'IOS': '15.4',
'IP': '10.255.0.1',
'hostname': 'london_r1',
'location': '21 New Globe Walk',
'model': '4451',
'vendor': 'Cisco'},
'r2': {'IOS': '15.4',
'IP': '10.255.0.2',
'hostname': 'london_r2',
'location': '21 New Globe Walk',
'model': '4451',
'vendor': 'Cisco'},
'sw1': {'IOS': '3.6.XE',
'IP': '10.255.0.101',
'hostname': 'london_sw1',
'location': '21 New Globe Walk',
'model': '3850',
'vendor': 'Cisco'}}
Python — Полезные функции
Функция print
Функция range
Функция sorted
enumerate
Анонимная функция (лямбда-выражение)
Функция zip (использование zip для создания словаря)
Функция all
Функция any
Функция map
Функция filter