I want to turn the list into a dict as follows:
somelist = [("facultyX", "memberA", "Student"),
("facultyX", "memberB", "Student"),
("facultyX","memberC", "Programmer"),
("facultyY", "memberD", "Student"),
("facultyY", "memberE","PostDoc")]
result = {'facultyX':{'Student':['memberA','memberB'],
'Programmer':['memberC']},
'facultyY':{'Student':['memberD'],
'PostDoc':['memberE']}}
With a little sprinkling of dict.setdefault()
that's not that hard:
result = {}
for fac, member, role in yourlist:
fac_data = result.setdefault(fac, {})
fac_data.setdefault(role, []).append(member)
Demo:
>>> somelist = [("facultyX", "memberA", "Student"),
... ("facultyX", "memberB", "Student"),
... ("facultyX","memberC", "Programmer"),
... ("facultyY", "memberD", "Student"),
... ("facultyY", "memberE","PostDoc")]
>>> result = {}
>>> for fac, member, role in somelist:
... fac_data = result.setdefault(fac, {})
... fac_data.setdefault(role, []).append(member)
...
>>> from pprint import pprint
>>> pprint(result)
{'facultyX': {'Programmer': ['memberC'], 'Student': ['memberA', 'memberB']},
'facultyY': {'PostDoc': ['memberE'], 'Student': ['memberD']}}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.