检查两个值中是否至少有一个存在且不为空

时间:2018-02-10 17:48:13

标签: python dictionary

我现在拥有的最佳解决方案。对于大多数人来说,不是pythonic,我希望!

# First Check if at least one of the two values exist in the OrderedDict.
if 'content' in validated_data or 'location' in validated_data:

    # If one exists, make sure it is not empty
    if 'content' in validated_data:
        if not validated_data['content']:
            raise MyException("You cannot have blank values")
    if 'location' in validated_data:
        if not validated_data['location']:
            raise MyException("You cannot have blank values")
    return validated_data

raise MyException("You need at least one field")

1 个答案:

答案 0 :(得分:6)

如果缺少密钥,您可以使用dict.get()返回默认值;使用它来测试两个键和值:

if not (validated_data.get('content') or validated_data.get('location')):
    raise MyException("You need at least one non-blank field")
return validated_data

如果validated_data['content']存在,validated_data.get('content')将返回它。如果存在,则返回None,返回false值。因此,当密钥存在但是错误时,并且当密钥丢失时,最终结果为假值并且测试'location'密钥。如果密钥存在且不是假值,则or表达式会短路。