Проблемы со списком списков Python в JSON - PullRequest
0 голосов
/ 13 июня 2018

Итак, у меня есть список списков, которые я пытаюсь преобразовать в словарь, чтобы затем преобразовать в объект JSON.

Пример списка списков

[
    ['service:3', 'name:Name1', 'description:What it does', 'displayname:display name of service', 'pathname:Dir path to executable', 'processid:6184', 'startname:Account\Name'],
    ['service:7', 'name:Name1', 'description:What it does', 'displayname:display name of service', 'pathname:Dir path to executable', 'processid:11188', 'startname:Account\Name'],
    ['service:4', 'name:Name1', 'description:What it does', 'displayname:display name of service', 'pathname:Dir path to executable', 'processid:8268', 'startname:Account\Name'],
    ['service:6', 'name:Name1', 'description:What it does', 'displayname:display name of service', 'pathname:Dir path to executable', 'processid:8528', 'startname:Account\Name'],
    ['service:2', 'name:Name1', 'description:What it does', 'displayname:display name of service', 'pathname:Dir path to executable', 'processid:2308', 'startname:Account\Name'],
    ['service:9', 'name:Name1', 'description:What it does', 'displayname:display name of service', 'pathname:Dir path to executable', 'processid:31380', 'startname:Account\Name'],
    ['service:1', 'name:Name1', 'description:What it does', 'displayname:display name of service', 'pathname:Dir path to executable', 'processid:2208', 'startname:Account\Name'],
    ['service:5', 'name:Name1', 'description:What it does', 'displayname:display name of service', 'pathname:Dir path to executable', 'processid:21468', 'startname:Account\Name'],
    ['service:8', 'name:Name1', 'description:What it does', 'displayname:display name of service', 'pathname:Dir path to executable', 'processid:21984', 'startname:Account\Name'],
    ['service:10', 'name:Name1', 'description:What it does', 'displayname:display name of service', 'pathname:Dir path to executable', 'processid:7560', 'startname:Account\Name']
]

Я хочу преобразовать это во вложенный словарь с верхним уровнем, являющимся IP-адресом сервера.

Пример потенциального словаря

{Server:Ipaddress 
    {[
    {service: 3, "name": "Name1", "description": "What it does", display"name": "display name of service", "pathname": "Dir path to executable", "processid": 6184, "startname": "Account\Name"},
    {service: 7, "name": "Name1", description: "What it does", display"name": "display name of service", "pathname": "Dir path to executable", "processid": 11188, "startname": "Account\Name"},
    {service: 4, "name": "Name1", description: "What it does", display"name": "display name of service", "pathname": "Dir path to executable", "processid": 8268, "startname": "Account\Name"},
    {service: 6, "name": "Name1", description: "What it does", display"name": "display name of service", "pathname": "Dir path to executable", "processid": 8528, "startname": "Account\Name"},
    {service: 2, "name": "Name1", description: "What it does", display"name": "display name of service", "pathname": "Dir path to executable", "processid": 2308, "startname": "Account\Name"},
    {service: 9, "name": "Name1", description: "What it does", display"name": "display name of service", "pathname": "Dir path to executable", "processid": 31380, "startname": "Account\Name"},
    {service: 1, "name": "Name1", description: "What it does", display"name": "display name of service", "pathname": "Dir path to executable", "processid": 2208, "startname": "Account\Name"},
    {service: 5, "name": "Name1", description: "What it does", display"name": "display name of service", "pathname": "Dir path to executable", "processid": 21468, "startname": "Account\Name"},
    {service: 8, "name": "Name1", description: "What it does", display"name": "display name of service", "pathname": "Dir path to executable", "processid": 21984, "startname": "Account\Name"},
    {service: 10, "name": "Name1", description: "What it does", display"name": "display name of service", "pathname": "Dir path to executable", "processid": 7560, "startname": "Account\Name"}
    ]}
}

Я пыталсяdict1 = dict(list1) однако, я получаю это builtins.ValueError: dictionary update sequence element #0 has length 7; 2 is required

Я также пытался

for item in list1:
    for i in item:
       dict1 = dict(i)

Это, конечно, тоже не сработало.builtins.ValueError: dictionary update sequence element #0 has length 1; 2 is required

Ни в одной из моих попыток я не был уверен, как включить детализацию сервера на более высокий уровень.Из того, что я прочитал, я должен переместить списки списков в dict, затем создать новый dict со значением сервера и добавить данные из предыдущего dict?

1 Ответ

0 голосов
/ 13 июня 2018

Основная проблема заключается в том, как вы пытаетесь создать список словарей из списка списков.

Обратите внимание, что в каждом подсписке вам нужно разделить каждый элемент на ":".str.split позволяет разбить каждый такой экземпляр на список.dict может принять итеративный из этих списков для создания словаря.Затем вы можете выполнить эту операцию для каждого подсписка в вашем внешнем списке.

Ниже приведен рабочий пример использования списка.

L = [['service:3', 'name:Name1', 'description:What it does', 'displayname:display name of service', 'pathname:Dir path to executable', 'processid:6184', r'startname:Account\Name'],
     ['service:7', 'name:Name1', 'description:What it does', 'displayname:display name of service', 'pathname:Dir path to executable', 'processid:11188', r'startname:Account\Name']]

res = [dict(i.split(':') for i in item) for item in L]

print(res)

[{'description': 'What it does',
  'displayname': 'display name of service',
  'name': 'Name1',
  'pathname': 'Dir path to executable',
  'processid': '6184',
  'service': '3',
  'startname': 'Account\\Name'},
 {'description': 'What it does',
  'displayname': 'display name of service',
  'name': 'Name1',
  'pathname': 'Dir path to executable',
  'processid': '11188',
  'service': '7',
  'startname': 'Account\\Name'}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...