根据某个特征对对象列表进行分组

Wak*_*iko 0 python dictionary list-comprehension list

我有一个对象列表(本例中的字符串),我想根据函数返回的某个特征对其进行分类.

例如,请考虑以下列表:

['sky', 'ocean', 'grass', 'tomato', 'leaf']
Run Code Online (Sandbox Code Playgroud)

和一个函数color(item),它返回传递给它的字符串的颜色,例如color('sky')返回'blue'.我现在想要将列表转换为字典或列表列表,这些列表根据项目的颜色/函数返回的值对项目进行分组.可能的结果如下所示:

{ 
    'blue': ['sky', 'ocean'],
    'green': ['grass', 'leaf'],
    'red': ['tomato']
}
Run Code Online (Sandbox Code Playgroud)

我不关心密钥本身,只是相应地对项目进行分组,因此嵌套列表也可以.试着以pythonic方式做到这一点:)

g.d*_*d.c 5

我想我会这样回答这个问题:

from collections import defaultdict

D = defaultdict(list)

a = ['sky', 'ocean', 'grass', 'tomato', 'leaf']

for item in a:
  D[color(item)].append(item)
Run Code Online (Sandbox Code Playgroud)

这会为您提供一个按颜色键入的列表字典,其中包含该类别的项目.