如何将列表转换为按对象名称分组的字典?

How do I convert a list into a dictionary grouped by object name?

假设我有一个列表 类:

[Blue((2, 1)), Blue((4, 2)), Orange((3, 2))]

我如何使用 Python 将其转换为这种格式的字典,同时不使用导入:

{'Blue': [Blue((2, 1)), Blue((4, 2))], 'Orange': [Orange((3, 2))]}

假设 BlueOrange 是 classes,您可以使用 type() 和 [=15] 找到每个对象的 classname =] 属性。然后,您可以使用 collections.defaultdict:

将每个 class 的实例收集到列表中
from collections import defaultdict

result = defaultdict(list)
for item in data:
    result[type(item).__name__].append(item)

print(result)

如果不能使用导入,可以使用.setdefault()代替:

result = {}
for item in data:
    result.setdefault(type(item).__name__, []).append(item)

print(result)