python - 在 for 循环理解中分配默认值以及设置交集
问题描述
我正在尝试理解逻辑为非标准颜色和空字符串分配默认值,但我不知道如何实现这一点
基本上,需要检查 required_color 是否为非标准/预定义颜色,然后将“红色”指定为默认值。
是否有更好的解决方案,而不需要/检查第 17/18 行中的条件,但以某种方式在理解逻辑本身中处理它。
'''
#!/usr/bin/env python3
#testcases:
#a. empty required_color then set "red" as default
#b. if SPECIAL_COLOR then set "green" as default
#c. non-standard color in required_color then set set "red" as default
#required_color variable is comma separated string
required_color = "yellow,orange"
pre_defined_expected_color = "red,blue,green,SPECIAL_COLOR"
#if required_color is empty or non standard color then set required_color to "red" as default
if not required_color or required_color not in pre_defined_expected_color:
required_color = "red"
for item in set(required_color.split(",")).intersection(set(["red", "blue", "green", "SPECIAL_COLOR"])):
# if SPECIAL_COLOR color then set item to "green" as default
if item == "SPECIAL_COLOR":
item = "green"
print(item)
break
'''
解决方案
使用字典并获取(默认):
required_color = "yellow,orange"
pre_defined_expected_color = "red,blue,green,SPECIAL_COLOR"
colorMap = {c:c for c in required_color.split(",")+pre_defined_expected_color.split(",")}
# remap "SPECIAL_COLOR" to "green"
colorMap ["SPECIAL_COLOR"] = "green"
# the .get not really needed here because you only use keys present in dict
for k in colorMap.keys():
print(colorMap.get(k))
# if your input may contain non-keys use get:
for k in ["pastel","oblique"]:
print(colorMap.get(k, "green"))
输出:
yellow
orange
red
blue
green
green # SPECIAL_COLOR
green # pastel
green # oblique
推荐阅读
- azure - Azure Migrate 凭据文件
- reactjs - 在 reactjs 和 expressjs 上使用 mongoose 连接不同的数据库
- python - 为什么 Numba 优化这个常规 Python 循环,而不是 numpy 操作?
- servicestack - 在连接表上选择不同的
- python - 当您在 python 中的全局变量之外调用局部变量时,这里实际发生了什么?
- javascript - 如何更改大小,使浏览器完全使用 selenium web-driver (JavaScript) 打开
- c# - 根据 C# 中包含的字符为字符串赋值的简单方法是什么?
- python - 曲线拟合拉曼光谱峰和热映射峰面积
- linux - ISC-DHCP-Server 停止运行/无法克隆池组
- google-cloud-firestore - Algolia Firestore Sync - 大型数据集 - 快速变化