Транспонировать список словарей - PullRequest
0 голосов
/ 04 апреля 2020

Учитывая следующий список словарей, представляющих набор данных:

a = [{"animal":"dog", "age":2},{"animal": "duck", "age": "3"}, {"animal": "duck", "age": "5"},{"animal":"dog", "age":10}]

Как я могу перенести это построчное представление в следующее пост столбцовое представление:

b = {"animal":["dog","duck","duck","dog"],"age":[2,3,5,10]}

Единственное единственное способ, которым я вижу, сделать это неэффективно - из первой записи извлеките ключи, а затем для каждого ключа итерируйте по строкам, чтобы извлечь значения.

Знаете ли вы лучший способ сделать это?

1 Ответ

1 голос
/ 04 апреля 2020

Это, вероятно, то, что вы описываете, но я считаю это вполне разумным подходом, использующим collections.defaultdict для инициализации значений в b для пустых списков:

from collections import defaultdict
b = defaultdict(list)
for animal in a:
    for key, val in animal.items():
        b[key].append(val)
print(b)

Выход:

defaultdict(<class 'list'>, {'animal': ['dog', 'duck', 'duck', 'dog'], 'age': [2, '3', '5', 10]})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...