有没有可能把这段代码缩短到只有几行
if rulesVersion:
payload["rulesVersion"] = rulesVersion
if scriptsVersion:
payload["scriptsVersion"] = scriptsVersion
if csq:
payload["CSQ"] = csq
if rebootTimes:
payload["RebootTimes"] = rebootTimes
if acdcSwitch:
payload["PowerSource"] = acdcSwitch
if temperature:
payload["Temperature"] = temperature
直接生成一个
dict
,然后过滤以忽略falsy值可能是最安全/最直接的解决方案:另一种方法(如果不小心,可能会出现名称和值不匹配的风险)是使用简单的
dict
理解对zip
-ed对进行元组化和循环:如果
payload
是一个已经存在的非空的dict
,您应该将最后一行更改为如下内容,以添加新值,而不是将payload
重新绑定到一个全新的dict
:类似地,对于已经存在
payload
的“构建一个dict
然后过滤它”情况,只需构建并过滤一个单独的dict
(additional_payload
或类似内容),然后生成最后一行:我喜欢这个问题。我不会像关心代码的可读性那样关心行数。以下是我将如何处理这个问题:
此测试输出
{'rulesVersion': 1.0, 'scriptsVersion': 1.0, 'CSQ': 1, 'RebootTimes': 'Test', 'PowerSource': 'Test', 'Temperature': 42}
相关问题 更多 >
编程相关推荐