python - 仅将非 None 值作为参数传递给函数
问题描述
我有一个 for 循环,根据选择的字段返回一个值或 None。
对于循环:
for fieldname, value in form.data.items():
if value is not None:
print(value)
下面给出的是for 循环的 print 语句的输出:
store_name
None
store_location
None
我正在尝试将上述循环语句的输出传递给如下所示的函数:
output = store_details() <<-- arguments to this function to only include non None items obtained from the above for loop statement
仅在上面的示例中store_name
,并且store_location
应该作为参数传递。我怎么能只传递非 None项作为参数?请注意,列表参数每次都可能不同,因此我正在尝试构建此函数,以便 store_details 函数每次仅传递非 None 值。
更新:
下面给出的是我要执行的循环。如果选择了所有字段(页面中有 5 个字段可供用户选择),这将正常工作。
l = []
for fieldname, value in form.data.items():
if value is not None:
l.append(value)
print(l)
p = l[:-1]
output = store_details(*p)
如果没有选择任何字段,它会返回一个“无”,它会抛出
psycopg2.ProgrammingError: column "none" does not exist in table
解决方案
实际上,您可以通过多种方式做到这一点。一个是字典理解:
fields = {field:value for field,value in form.data.items() if value != None and value != 'None' and field != 'csrf_token'}
output = store_details(**fields)
更新
我已经包含了“无”检查并排除了 csrf_token。请使用and
运算符,而不是or
.
推荐阅读
- javascript - vue.js 中 v-for 中的模板格式
- python - Pyopengl 读取 obj 文件
- flutter - 如何检查表是否为空?
- angular - 未定义标识符“更新”。'Changelog[]' 不包含这样的成员
- microsoft-graph-api - 如何使用 Microsoft delta 查询处理已删除的重复主事件
- c# - 引擎盖下的 OpenCover
- c# - appsetting.development.json 是由 .net core 3.1 中的代码提取的注释
- terminal - 如何自定义 iTerm 终端以显示我(主)?
- docker - 如何使用 redis-rs 从 Docker 容器内部连接到 Redis?
- c - 为什么我得到这个单一的输出错误?