我有一个可以有三个键url
的词典。 link
和path
。当我验证字典时,这三者必须是互斥的,即如果字典中存在键url
,那么path
和link
就不存在等等...... / p>
要添加到并发症:主键不能为空(null或'')
我经常遇到这样的场景,并写了一堆条件语句来测试它。还有更好的方法吗?
感谢。
答案 0 :(得分:3)
为了测试你的情况,你可以这样做:
# d is your dict
has_url = bool(d.get('url', False))
has_link = bool(d.get('link', False))
has_path = bool(d.get('path', False))
# ^ is XOR
if not (has_url ^ has_link ^ has_path):
# either none of them are present, or there is more than one, or the
# one present is empty or None
要找到哪一个存在并对其采取行动,你可能仍需要三个独立的分支。
答案 1 :(得分:1)
+1到CatPlusPlus,但是他的代码中有一个我已经评论过的问题,但是这里有修复:
if (url in d and d[url] not in [None, '']) ^ (link in d and d[link] not in [None, '']) ^ (path in d and d[path] not in [None, '']):
# mutex condition satisfied
else:
# at least two are keys in the dict or none are
答案 2 :(得分:-1)
也许你不应该使用字典,而是使用元组:
(value, "url") or (value, "path") or (value, "link")