Python 3中简化多值or条件判断、批量新增匹配项的简便方法
方案1:使用in关键字做成员判断
你可以把同色系的色值统一放到列表/集合中,后续新增匹配色值只需要往对应容器里加元素即可,不需要修改判断逻辑,集合的成员查询效率比列表更高,色值数量少的场景用列表也可以:
# 各颜色对应色值集合 green_pixels = {"#356044", "#22402b", "#213f2c", "#356043", "#22402c", "#346044"} brown_pixels = {"#7c3d15", "#493613", "#4a3612", "#6a553e", "#785735", "#5e4b37", "#6a553e", "#86623c", "#8b4f0d", "#7c3d14", "#6a553d", "#7c3d14", "#6a553d", "#7c3d14", "#87623c", "#6e3612", "#87613c"} silver_pixels = {"#8b8b8a", "#8b8b8b", "#8b8a8b"} if outputbodypixel in green_pixels: output_body = "green" elif outputbodypixel in brown_pixels: output_body = "brown" elif outputbodypixel in silver_pixels: output_body = "silver" else: output_body = "NOT DEFINED"
后续要新增匹配色值,只要往对应颜色的集合里加元素即可,比如给绿色加#ebebeb,直接写green_pixels.add("#ebebeb")或者在定义集合时直接写入元素即可。
方案2:使用字典映射(更适合后续新增颜色类别)
如果后续可能新增更多颜色分类,可以用字典把颜色和对应色值绑定,新增分类不需要修改判断逻辑,只要加字典键值对即可:
color_mapping = { "green": {"#356044", "#22402b", "#213f2c", "#356043", "#22402c", "#346044"}, "brown": {"#7c3d15", "#493613", "#4a3612", "#6a553e", "#785735", "#5e4b37", "#6a553e", "#86623c", "#8b4f0d", "#7c3d14", "#6a553d", "#7c3d14", "#6a553d", "#7c3d14", "#87623c", "#6e3612", "#87613c"}, "silver": {"#8b8b8a", "#8b8b8b", "#8b8a8b"} } output_body = "NOT DEFINED" for color, pixel_set in color_mapping.items(): if outputbodypixel in pixel_set: output_body = color break
这种方式扩展性更强,后续加新颜色比如灰色,只要在color_mapping里加一行"gray": {"#ebebeb", "#ececec", "#212121"}就完成了,判断逻辑完全不用改。
内容的提问来源于stack exchange,提问作者Namenone
相关产品推荐
相关产品推荐

