我有一个玩具列表,每个玩具都有一个与之相关的颜色。每个玩具都是独一无二的,但其中一些玩具可能具有相同的颜色。我想把所有的玩具按照他们的颜色分组,并把它们放入子列表中。所以基本上,我想要一个按颜色分组的所有玩具的列表。基于Python中的属性创建子列表
我已经看到了一些关于如何用布尔值或有限数量的值来完成此任务的文章,但我希望能够用任何颜色或者任何字符串来完成此操作。
我有一个玩具列表,每个玩具都有一个与之相关的颜色。每个玩具都是独一无二的,但其中一些玩具可能具有相同的颜色。我想把所有的玩具按照他们的颜色分组,并把它们放入子列表中。所以基本上,我想要一个按颜色分组的所有玩具的列表。基于Python中的属性创建子列表
我已经看到了一些关于如何用布尔值或有限数量的值来完成此任务的文章,但我希望能够用任何颜色或者任何字符串来完成此操作。
试试这个:
from collections import defaultdict
toys_color = defaultdict(list)
for toy in toys:
toys_color[toy.color].append(toy)
list_toys_color = list(toys_color.items())
如果你不想每个组的颜色,使用该行:
list_toys_color = list(toys_color.values())
这与我之前想要做的很不一样,但那是有效的。谢谢。 – Nealon
试试这个:
colors = set([toy.color for toy in toys])
groups = [ [toy for toy in toys if toy.color == color] for color in colors]
它应该适用于曾经出现在任何玩具上的任何类型的颜色。 不太优雅,但更具扩展性的解决方案是不那么多次迭代玩具:
colored = {}
for toy in toys:
l = colored[toy.color]
if len(l) == 0:
l = []
l.append(toy)
你应该张贴您的数据结构代码 – Navidad20
@ Navidad20我想过这个问题,但它带有一个字段是一个类称为颜色的字符串。你真的需要一个可视化的吗? – Nealon