使用Python将字典排序为组的最佳方法

Jac*_*ero 9 python sorting list

我有一个词典列表,例如:

[{'person':'guybrush','job':'pirate'},{'person':'leChuck','job':'pirate'}, {'person':'elaine','job':'governor'}]
Run Code Online (Sandbox Code Playgroud)

我想显示按工作分组的人员.因此,在前端,我们可以选择一份工作并查看所有拥有所选工作的人员.

在使用混乱的嵌套循环和列表之前,我已经执行了这样的功能.

您认为获得此结果的最有效方法是什么?

pirate = ['guybrush','leChuck']
governor = ['elaine']
Run Code Online (Sandbox Code Playgroud)

Bjö*_*lex 21

这很简单,使用defaultdict:

persons_by_jobs = defaultdict(list)
for person in persons:
    persons_by_jobs[person['job']].append(person['person'])
Run Code Online (Sandbox Code Playgroud)

  • 如果你在谈论[`itertools.groupby`](https://docs.python.org/3/library/itertools.html#itertools.groupby),它要求列表已经按分组谓词排序.这意味着我们需要对数据进行两次传递,一次用于排序,一次用于分组.我认为我在这里提出的解决方案更简单,而且效率更高. (3认同)