我正在嘗試創建一個函式,該函式接收任何引數但僅在它是字典時才回傳 True。到這里為止,沒關系。但是我的 dic 有一些規則:有 3 個鍵:“名稱”、“通過”和“規則”。'name' 和 'pass' 值應該不包含字串并且超過 1 個單詞。'rule' 值是一個帶有 2 個鍵的 dic:'vals' 是一個具有 2 個正整數的元組,'char' 是一個小寫字母。
應該是這樣的:
IsValid({'name':john.d', 'pass':'aabcde', 'rule':{'vals':(2,4), 'char':'a'}})
真的
IsValid({'name':john.d', 'pass':'aabcde', 'rule':{'vals':1, 'char':'a'}})
錯誤的
如何訪問每個鍵并為值的每個欄位設定條件?
uj5u.com熱心網友回復:
你可以嘗試這樣的事情:
def IsValid (data):
if type(data) is not dict:
return False
if 'name' not in data:
return False
elif type(data['name']) is not str:
return False
# add the remaining checks
# ......
# All ok, return True
return True
uj5u.com熱心網友回復:
基本上有功能檢查所有這些。
喜歡 :
def my_checker_function(unsafe_dict):
for key in ['name', 'pass', 'rule']:
if key not in unsafe_dict:
return False
if not isinstance(unsafe_dict['name'], str):
return False
# more checks
return True
只需以這種方式撰寫您的例外,回傳 False。最后,回傳 True。
uj5u.com熱心網友回復:
def isValid(a):
keys = ['name', 'pass', 'rule']
if isinstance(a, dict) and all([i in a for i in keys]):
if all([isinstance(a[i], str) for i in keys[:-1]]):
if isinstance(a['rule'], dict) and all([i in a['rule'] for i in ['vals', 'char']]):
if isinstance(a['rule']['vals'], tuple) and len(a['rule']['char']) == 1 and a['rule']['char'].islower():
return True
return False
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/346731.html
上一篇:如何使用Encoding.ASCII.GetBytes處理大量資料?(拋出OutOfMemoryException)
