Преобразование списков в список словарей - PullRequest
2 голосов
/ 07 февраля 2020

У меня есть следующие пять списков:

a = ['RA CROXE-14156', 'RA CROXE-14084', ]
b = ['CR','ENGINEER_NAME','DESCRIPTION','BINARIES']
c = ['John', 'Mark']
d = ['M4 Hiding Emergency Group from mgr menu', 'M4-NRT: SQLCODE_-11300', ]
e = ['TEL', 'mao.SYM']

Мне нужно создать список словарей, подобный этому:

CRS = [
{
      'CR': 'RA CROXE-14156'
      'ENGINEER_NAME': 'John', 
      'DESCRIPTION': 'M4 Hiding Emergency Group from mgr menu',
      'BINARIES': 'TEL'
},
{  
      'CR': 'RA CROXE-14084'
      'ENGINEER_NAME': 'MARK', 
      'DESCRIPTION': 'M4-NRT: SQLCODE_-11300', 
      'BINARIES': 'mao.SYM'
}
]

Мне нужно преобразовать пять списков в список словари. Как я могу это сделать?

Ответы [ 2 ]

1 голос
/ 07 февраля 2020

Вы можете использовать zip с dict:

a = ['RA CROXE-14156', 'RA CROXE-14084', ]
b = ['CR','ENGINEER_NAME','DESCRIPTION','BINARIES']
c = ['John', 'Mark']
d = ['M4 Hiding Emergency Group from mgr menu', 'M4-NRT: SQLCODE_-11300', ]
e = ['TEL', 'mao.SYM']
result = [dict(zip(b, i)) for i in zip(a, c, d, e)]

Выход:

[{'CR': 'RA CROXE-14156', 'ENGINEER_NAME': 'John', 'DESCRIPTION': 'M4 Hiding Emergency Group from mgr menu', 'BINARIES': 'TEL'}, {'CR': 'RA CROXE-14084', 'ENGINEER_NAME': 'Mark', 'DESCRIPTION': 'M4-NRT: SQLCODE_-11300', 'BINARIES': 'mao.SYM'}]
1 голос
/ 07 февраля 2020

Вы можете использовать следующие списки / дикты, используя zip() и enumerate():

>>> CRS = [{b[i]: v for i, v in enumerate(x)} for x in zip(a,c,d,e)]
>>> CRS
[{'CR': 'RA CROXE-14156',
  'ENGINEER_NAME': 'John',
  'DESCRIPTION': 'M4 Hiding Emergency Group from mgr menu',
  'BINARIES': 'TEL'},
 {'CR': 'RA CROXE-14084',
  'ENGINEER_NAME': 'Mark',
  'DESCRIPTION': 'M4-NRT: SQLCODE_-11300',
  'BINARIES': 'mao.SYM'}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...