Используйте glom для получения индекса при просмотре списка словарей

      from glom import glom, T
from glom.core import Val


target = [
    {"firstname": 'boka', 'lastname':'raton'},
    {"firstname": 'cape', 'lastname':'town'}
]
spec = ([{
    'fname':'firstname',
    'index': Val('0')
}])

r = glom(target, spec)
print(r)

Можно ли получить индекс при итерации по списку словарей с помощью glom?
Текущий выход:

      [{'fname': 'boka', 'index': '0'}, {'fname': 'cape', 'index': '0'}].   

Но хотелось бы иметь следующее:

      [{'fname': 'boka', 'index': 0}, {'fname': 'cape', 'index': 1}]

1 ответ

Решил это, перечисляя элементы и выполняя glom по одному словарю за раз.
Использовал Val для оценки обернутого значения index

      from glom import glom
from glom.core import Val
result = []
for index, value in enumerate(target):
    spec = {
        'fname': 'firstname',
        'index': Val(index)
    }
    r = glom(value, spec)
    result.append(r)
print(result)
Другие вопросы по тегам