我對Python相當陌生,我試圖將過濾器查詢建立爲帶有n深度字典的最終結果。裏面可以有其他字典和列表。如何遍歷一個深度嵌套的字典,其中包含Python中的列表和其他字典?
這是我的結構:
filters = {
predicate: 'AND',
filters: [
{'property_class_id': 10, operator: 'contains', operands: ['FOO']},
{
predicate: 'NOT',
filters: [{
predicate: 'OR',
filters: [
{'property_class_id': 1, operator: 'contains', operands: ['Hello']},
{'property_class_id': 2, operator: 'contains', operands: ['my search term']}
]
}]
},
{
predicate: 'OR',
filters: [
{'property_class_id': 3, operator: 'contains', operands: ['my search term']},
{'property_class_id': 4, operator: 'contains', operands: ['my search term']}
]
}
]
}
我希望這將轉化爲A +符合Q對象(B或C)+(d或E)!
然而,我的第一個問題是,如何遍歷每個鍵值對的字典?
這是我迄今爲止的內容,但您可以在列表中找到限制,因爲for循環只接受字典。
def unpack_filter(self, filters):
q_object = Q()
q_list = []
for key, value in filters.iteritems():
if isinstance(value, list) or isinstance(value, dict):
self.unpack_filter(value)
else:
print "{0} : {1}".format(key, value)