首页 > 解决方案 > python中是否有一种将非空值分配给字典的捷径?

问题描述

是否有更短的方法来编写此代码以避免每次检查都使用 ifs?

first_name = "John"
middle_name = ""
last_name = "Doe"

data = {}

if first_name:
  data['first_name'] = first_name
if middle_name:
  data['middle_name'] = middle_name
if last_name:
  data['last_name'] = last_name

return data

标签: python-3.x

解决方案


您可以先分配所有值而不检查真实性,然后过滤:

data = {
    "first_name": first_name,
    "middle_name": middle_name,
    "last_name": last_name,
}
data = {key: value for key, value in data.items() if value}

但鉴于您正在存储/处理名称:我建议您只对整个名称使用单个变量。无论您对名称的假设是什么,都可能是错误的。


推荐阅读