简体   繁体   English

在Python中将元组列表分组到字典

[英]Group a list of tuples to dictionary in Python

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: 稍微撒一些dict.setdefault()就不那么困难了:

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']}}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM