我有一個玩具列表,每個玩具都有一個與之相關的顏色。每個玩具都是獨一無二的,但其中一些玩具可能具有相同的顏色。我想把所有的玩具按照他們的顏色分組,並把它們放入子列表中。所以基本上,我想要一個按顏色分組的所有玩具的列表。基於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