create dict from different list with first element

Question:

I have this data:

[1999, teacher, 5]
[1999, student, 6]
[2000, doctor, 11]

I want to create dict:

{'1999': {'field1': teacher, 'field2': 5}, '2000': {'field1': doctor, 'field2': 11}}

How can I get 2 unique years from data and set it in dict?Please can anybody help to understand

Asked By: Ken Ist

||

Answers:

we dont know the format of the data you are having.

if you have list of lists:

data = [[1999, 'teacher', 5], [1999, 'student', 6], [2000, 'doctor', 11]]

res = {}
for record in data:
    res[str(record[0])] = {f'field{k}': v for k, v in enumerate(record[1:], start=1)}

if you have text (or file):

import io

data = io.StringIO('''[1999, teacher, 5]
[1999, student, 6]
[2000, doctor, 11]''')
res = {}
for line in data.readlines():
    record = line.replace('[', '').replace(']', '').split(',')
    res[record[0]] = {f'field{k}': v.strip() for k, v in enumerate(record[1:], start=1)}
Answered By: MBarsi

How about using Python’s iterators, this is pure beauty:

data = [[1999, 'teacher', 5], [1999, 'student', 6], [2000, 'doctor', 11]]
print({str(next(obj)): {'field1': next(obj), 'field2': next(obj)} for obj in map(iter, data)})

Output:

{'1999': {'field1': 'student', 'field2': 6}, '2000': {'field1': 'doctor', 'field2': 11}}
Answered By: funnydman