0
私は印刷カテゴリツリー(サブカテゴリを持つメインカテゴリ)を試していますが、私は無限レベルの深さまで準備が整う洗練されたソリューションに問題があります。ループステートメントはマルチレベルの深さに対応しています
私が持っているこの瞬間:
cat_id = '31'
cat = prestashop.get('categories', options={'display':'full', 'filter[id]':'[' + cat_id + ']'})['categories']['category']['associations']['categories']['category']
'''
cat returns dictionary:
cat [
{'id': '32'},
{'id': '37'},
{'id': '48'},
{'id': '52'},
{'id': '54'},
{'id': '57'},
{'id': '58'},
{'id': '59'},
{'id': '1068'}
]
'''
for c in cat:
print 'Level 2: ' + c['id']
try:
cat = prestashop.get('categories', options={'display':'full', 'filter[id]':'[' + c['id'] + ']'})['categories']['category']['associations']['categories']['category']
for c in cat:
print 'Level 3: ' + c['id']
try:
cat = prestashop.get('categories', options={'display':'full', 'filter[id]':'[' + c['id'] + ']'})['categories']['category']['associations']['categories']['category']
for c in cat:
print 'Level 4: ' + c['id']
try:
cat = prestashop.get('categories', options={'display':'full', 'filter[id]':'[' + c['id'] + ']'})['categories']['category']['associations']['categories']['category']
for c in cat:
print 'Level 5: ' + c['id']
except:
pass
except:
pass
except:
pass
ご覧のとおり、私のコードの有効性は、私が手動で入力しますレベルに依存します。それは貧弱な解決策ですが、私はこの瞬間にできることがあります。
どのようにして無限水準(レベル5,6,7,8,9,10,11,12 ...)に対応できるようにコードを調整し、メンテナンスフリーにすることができますか?
結果:
Level 2: 32
Level 3: 33
Level 3: 1178
Level 2: 37
Level 3: 1201
Level 3: 38
Level 3: 39
Level 3: 40
Level 4: 1020
Level 4: 41
Level 4: 42
Level 3: 43
Level 4: 1092
Level 4: 1093
Level 4: 1094
Level 4: 1095
Level 3: 1024
Level 4: 44
Level 4: 45
Level 4: 1179
Level 2: 48
Level 3: 49
Level 3: 50
Level 3: 51
Level 3: 1128
Level 3: 1067
Level 3: 1133
Level 2: 52
Level 3: 53
Level 3: 1200
Level 2: 54
Level 3: 55
Level 3: 56
Level 3: 1202
Level 2: 57
Level 2: 58
Level 2: 59
Level 3: 60
Level 3: 61
Level 2: 1068
残念ながら、正しく動作しません。それは、レベル '返し2:32 レベル3:33 レベル2:37 レベル3:1201 レベル2:48 レベル3:49 レベル2:52 レベル3:53 レベル2:54 レベル3 :55 レベル2:57'。 Prestaとは思えませんが、多次元配列です。 – user3041764