【发布时间】:2016-10-16 07:15:46
【问题描述】:
我有一个包含数千种不同颜色的数据库。我想将它们映射到列表中的一种颜色。
在这个颜色数据库只有几百个之前,我用下面的代码来管理它。现在越来越无法维护,因为这个未分类颜色的数据库正在增长,并且每周都要花很多时间来绘制地图。
我该如何改进这一点,或者有什么更好的方法?
mapped_colours = ['Red', 'Green', 'Yellow', 'Blue', 'White', 'Black', 'Pink', 'Purple'...]
colour_map_dict = {
'olive': 'Green',
'khaki': 'Green'
}
def classify_colour(colour):
for mp in mapped_colours:
if mp.lower() in colour.lower():
return mp
for map, colour in colour_map_dict.items():
if map in colour.lower():
return colour
以下是传入数据的示例。
Resin Dark Wash Indi
Filtered Canyon
999 Black
Winter White/Dove Grey
Midnight/min
White & black
Green/White
Red/White
Multicolor
royal blue
Black Plum Grey
Rose/ Gold
Red And White
Offwht/Gg
Black Gunmetal
Berry/Black
Caramel
Blue Stone Bleached
All Tan
Pale Blush
Tee
White / Multi
00-black
Flat Foundation
Baby Blue
Beige Melange
【问题讨论】:
-
措辞比上次好多了:-)
-
@MartijnPieters 谢谢 :)
-
能否将映射也存储在数据库中?
-
在您的数据库中创建此映射并使用数据库引擎对其进行管理?
-
这似乎是一项或多或少不可能完成的任务。在您提供的几个示例中,有几个示例无法映射到列表中的单一颜色(“Multicolor”?!)除非您可以获得所描述的实际颜色的 RGB/HSV,否则很难看看您如何以自动化的方式前进。也许您可以使用 Mechanical Turk 或 CrowdFlower 之类的工具来众包分类?
标签: python