2 回答

TA貢獻(xiàn)1744條經(jīng)驗(yàn) 獲得超4個贊
為什么不all
與列/檢查值的壓縮列表一起使用?
if all(value[col] == check for col,check in zip((col1,col2),(check1,check2))):
如果你有更多的參數(shù),我建議你轉(zhuǎn):
def validate(self, data, check1, check2, col1, col2):
進(jìn)入
def validate(self, data, check_values, columns):
所以你可以適應(yīng):
if all(value[col] == check for col,check in zip(columns,check_values)):
此外,由于這些值和列是鏈接的,因此可以直接傳遞元組列表或?qū)⑺鼈冩溄釉谝黄鸬淖值涞?code>validate.

TA貢獻(xiàn)1776條經(jīng)驗(yàn) 獲得超12個贊
如果您不需要一個對象/返回中的所有輸出,我們可以對您的第一個函數(shù)進(jìn)行一些調(diào)整。
from collections import defaultdict
def validate(data, check_value, column_index):
# validating whether the list item at column_index == check_value
output = defaultdict(list)
for k,v in data.items(): # for python2, use data.iteritems()
if check_value in v and column_index <= len(v) and v[column_index] == check_value:
output[check_value].append({k: [v[column_index], 'passed']})
else:
output[check_value].append({k: [v[column_index], 'failed']})
return output
這應(yīng)該為您的單值測試返回相同的預(yù)期結(jié)果。
您可以對多個值執(zhí)行以下操作:
check_values = ['ok', 'b']
column_indices = [3, 2]
for value, index in zip(check_values, column_indices):
validate(data, value, index)
返回:
defaultdict(<class 'list'>, {'ok': [{'key1': ['ok', 'passed']}, {'key2': ['down', 'failed']}]})
defaultdict(<class 'list'>, {'b': [{'key1': ['c', 'failed']}, {'key2': ['c', 'failed']}]})
添加回答
舉報