Как словарь - замените 'NaN'
на np.nan
, если это значение, которое вы ищете.
>>> keys = ['A', 'B', 'C', 'D']
>>> l = [(33.0, 134), (54.0, 113), (21.0, 120)]
>>> dict(zip(keys,([x for sl in l for x in sl]+['NaN']*len(keys))[:len(keys)]))
{'A': 33.0, 'B': 134, 'C': 54.0, 'D': 113}
>>> l = [(25.0, 153)]
>>> dict(zip(keys,([x for sl in l for x in sl]+['NaN']*len(keys))[:len(keys)]))
{'A': 25.0, 'B': 153, 'C': 'NaN', 'D': 'NaN'}
>>> l = [(,)]
>>> dict(zip(keys,([x for sl in l for x in sl]+['NaN']*len(keys))[:len(keys)]))
{'A': 'NaN', 'B': 'NaN', 'C': 'NaN', 'D': 'NaN'}
Объяснение:
Мы используем zip()
, чтобы сжать список ключей размером n
со сглаженным списком кортежей, добавив в конец список значений n
'NaN'
, а затем отрубив первые n
значения. Конструктор dict()
принимает сжатый список в качестве аргумента.