簡體   English   中英

在Python中將元組列表分組到字典

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

我想將列表變成字典,如下所示:

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

稍微撒一些dict.setdefault()就不那么困難了:

result = {}

for fac, member, role in yourlist:
    fac_data = result.setdefault(fac, {})
    fac_data.setdefault(role, []).append(member)

演示:

>>> 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