Попытка переформатировать список словарей в Python - PullRequest
0 голосов
/ 01 июня 2019

У меня в столбце данных есть столбец genres, где каждая строка состоит из списка объектов словарей. Например, вот первая строка:

[{"id": 28, "name": "Action"}, {"id": 12, "name": "Adventure"}, {"id": 14, "name": "Fantasy"}, {"id": 878, "name": "Science Fiction"}]

Я хотел бы переформатировать это так, чтобы каждая строка содержала только информацию, найденную в ключе «name», предпочтительно выгруженную в список.

Так, например, вывод для первой строки будет выглядеть следующим образом:

["Action", "Adventure", "Fantasy", "Science Fiction"]

Любая помощь будет очень признательна.

Ответы [ 3 ]

3 голосов
/ 01 июня 2019
data = [{"id": 28, "name": "Action"}, {"id": 12, "name": "Adventure"}, {"id": 14, "name": "Fantasy"}, {"id": 878, "name": "Science Fiction"}]

out = [x['name'] for x in data]

print(out)
3 голосов
/ 01 июня 2019

Используйте список-понимание, которое вынимает каждый словарь из списка и извлекает 'name':

[x['name'] for x in lst]

В код :

lst = [{"id": 28, "name": "Action"}, {"id": 12, "name": "Adventure"}, {"id": 14, "name": "Fantasy"}, {"id": 878, "name": "Science Fiction"}]

print([x['name'] for x in lst])
# ['Action', 'Adventure', 'Fantasy', 'Science Fiction']
0 голосов
/ 01 июня 2019

Вы также можете использовать itemgetter, используя 'name' в качестве ключа

import operator

lst = [{"id": 28, "name": "Action"}, {"id": 12, "name": "Adventure"}, 
       {"id": 14, "name": "Fantasy"}, {"id": 878, "name": "Science Fiction"}]

answer = list(map(operator.itemgetter('name'), lst))

# ["Action", "Adventure", "Fantasy", "Science Fiction"]
...