Попытка загрузки списка списков из списка словарей - PullRequest
0 голосов
/ 24 марта 2019

Я пытаюсь загрузить список элементов словаря в список списка в Python 2.7.В настоящее время данные выглядят как 20 строк следующего:

[{'professional:xp': '100', 'personal:power': 'fly', 'personal:hero': 'yes', 'custom:color': 'black', 'professional:name': 'batman'}, {'professional:xp': '86', 'personal:power': 'think', 'personal:hero': 'no', 'custom:color': 'grey', 'professional:name': 'gandalf'}, ...]

Я хочу сделать что-то вроде этого:

[[100, 'fly', 'yes', 'black', 'batman'][86, 'think', 'no', 'grey', 'gandalf']...]

Я пробовал много разных способов зацикливания, но не могу получитьрезультат.

i = -1
j = -1
scanList = []
joinList = [[]]

for item in scanList:
    i = i+1
    for k, v in item.iteritems():
        j= j+1
        joinList[i][j].append(v)

Мне пришла в голову идея загрузки списка через вложенный цикл (заранее я не знаю, находятся ли мои i и j в нужном месте, но я могу поработать над этим).Я просто продолжаю выходить из ошибок индекса и не знаю, нужно ли мне инициализировать список списков раньше?

Ответы [ 4 ]

4 голосов
/ 24 марта 2019

Сейчас самое время узнать о списочных понятиях .Также обратите внимание, что [dict].values() удобно возвращает список значений в словаре.

joinList = [d.values() for d in scanList]

Обратите внимание, что в Python 3.x values() возвращает объект представления , которыйдолжен быть явно преобразован в список:

# Python 3.x version
joinList = [list(d.values()) for d in scanList]
1 голос
/ 24 марта 2019
data=[{'professional:xp': '100', 'personal:power': 'fly', 'personal:hero': 'yes', 'custom:color': 'black', 'professional:name': 'batman'}, {'professional:xp': '86', 'personal:power': 'think', 'personal:hero': 'no', 'custom:color': 'grey', 'professional:name': 'gandalf'}]

new_data=[list(j.values()) for j in data]
print(new_data)

вывод

[['yes', 'black', 'batman', 'fly', '100'], ['no', 'grey', 'gandalf', 'think', '86']]
1 голос
/ 24 марта 2019

Вы можете использовать этот код:

for item in scanList:
    list = []
    for key, value in item.iteritems():
        list.append(value)
    joinlist.append(list)
1 голос
/ 24 марта 2019

Вы можете получить значения словаря с помощью функции values .Теперь вам нужно перебирать свои словари и вызывать для них значения:

[d.values() for d in scan_list]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...