compress#

Функция compress позволяет фильтровать данные: она возвращает те элементы из data, которые соответветствуют истинному значению в selectors:

itertools.compress(data, selectors)

Пример использования compress для фильтрации полей с ненулевым значением:

In [9]: headers = ['tx_packets', 'rx_packets', 'tx_bytes', 'rx_bytes', 'broadcasts']

In [10]: data = [294785, 0, 22275381, 0, 253218]

In [12]: list(compress(headers, data))
Out[12]: ['tx_packets', 'tx_bytes', 'broadcasts']

In [14]: list(compress(zip(headers, data), data))
Out[14]: [('tx_packets', 294785), ('tx_bytes', 22275381), ('broadcasts', 253218)]

In [24]: dict(compress(zip(headers, data), data))
Out[24]: {'tx_packets': 294785, 'tx_bytes': 22275381, 'broadcasts': 253218}

Пример фильтрации None:

In [25]: data2
Out[25]: [294785, 0, 22275381, None, None]

In [26]: headers
Out[26]: ['tx_packets', 'rx_packets', 'tx_bytes', 'rx_bytes', 'broadcasts']

In [27]: list(compress(zip(headers, data2), selectors=map(lambda x: x != None, data2)))
Out[27]: [('tx_packets', 294785), ('rx_packets', 0), ('tx_bytes', 22275381)]