मैं अजगर के लिए नया हूँ, मदद की ज़रूरत है।
मुझे एक हुक्म मिला है।
categories = {
'Private_Life': {
'Shopping': {
'Shopping': 'Торгово-развлекательные центры',
'Cleaning_Agents': 'Хозтовары, бытовая химия',
'Clothing_footwear': 'Одежда, обувь, аксессуары',
'Domestic_Appliances': 'Бытовая техника',
'Consumer_Electronics': 'Аудио-, видео-, фототехника',
'Tools': 'Инструменты',
'General': 'Универсальное',
'Other': 'Прочее',
},
'Cooking': {
'Grocery_stores': 'Продуктивные магазины',
'Tobacco': 'Табак',
'Soft_drinks': 'Безалкогольные напитки'
},
'Holidays': {
'Gifts': 'Подарки',
'February23': {
'Gifts': 'Подарки'
},
'Fancy_dress': 'Карнавальные костюмы',
'Firework': 'Фейерверки'
},
'Beauty': {
'Perfumery': 'Парфюмерия',
'Jewelry': 'Украшения',
'Make_up': 'Косметика'
},
'Other': 'Прочее'
},
'Automobiles': {
'Parts': {
'Online_shops': 'Интернет магазины',
'Tyres': 'Шины и диски',
'Spare_Parts': 'Автозапчасти',
'Chemicals': 'Автохимия и автокосметика',
'Car_Navigators': 'Автонавигаторы'
}
},
'Sports': {
'Shopping': {
'Sports_feed': 'Спортивное питание',
'Sports_shops': 'Спортивные магазины',
'Skis_snowboards': 'Лыжи, сноуборды',
'Sportswear': 'Спортивная одежда, обувь',
'Rollers,_skateboards': 'Ролики, скейтборды',
'Bicycles': 'Велосипеды',
'Simulators': 'Тренажоры'
},
'Summer': {
'Bikes': 'Велосипеды',
'Shoot': 'Стрельба',
'Ping_pong': 'Настольный теннис'
},
'Extreme': {
'Rollers': 'Роллерспорт и скейтбординг',
'Snowboarding': 'Сноубординг'
}
}
}
वो रास्ते हैं। मुझे प्रत्येक ताना तत्व को लूप करने और सभी नेस्टेड कुंजी प्राप्त करने की आवश्यकता है। मैं सरणी प्राप्त करने की उम्मीद कर रहा हूँ।
मैंने इस तरह से कोशिश की:
def get_category_paths(self, categories):
result = []
for key, value in categories.items():
path = key
if isinstance(value, dict):
path += '/'
path += self.get_category_path(value)
return path
result.append(self.host + path + self.query_parameters)
return result
लेकिन यह गलत है।
मैं यही पाने की कोशिश कर रहा हूं: Private_Life/Shopping/Shopping Private_Life/Shopping/Cleaning_Agents
और इसी तरह हर नेस्टेड चाबियों द्वारा
धन्यवाद
1 उत्तर
आपका रिकर्सन बंद है। आपके द्वारा साझा किया गया कोड पूर्ण नहीं है इसलिए वहां मदद नहीं कर सकता।
लेकिन आप जो खोज रहे हैं उसे पाने के लिए आप यही कर सकते हैं:
def get_all_keys(dict_item, key_base=''):
all_paths = []
if isinstance(dict_item, dict):
for key in dict_item:
if key_base:
new_key = key_base + "/" + key
else:
new_key = key
all_paths.extend(get_all_keys(dict_item[key], new_key))
else:
if key_base:
all_paths.append(key_base)
return all_paths
get_all_keys(categories)
आउटपुट:
['Automobiles/Parts/Spare_Parts',
'Automobiles/Parts/Chemicals',
'Automobiles/Parts/Car_Navigators',
'Automobiles/Parts/Tyres',
'Automobiles/Parts/Online_shops',
'Private_Life/Holidays/Gifts',
'Private_Life/Holidays/February23/Gifts',
'Private_Life/Holidays/Firework',
'Private_Life/Holidays/Fancy_dress',
'Private_Life/Shopping/Tools',
'Private_Life/Shopping/Cleaning_Agents',
'Private_Life/Shopping/Clothing_footwear',
'Private_Life/Shopping/Domestic_Appliances',
'Private_Life/Shopping/Shopping',
'Private_Life/Shopping/General',
'Private_Life/Shopping/Consumer_Electronics',
'Private_Life/Shopping/Other',
'Private_Life/Cooking/Soft_drinks',
'Private_Life/Cooking/Grocery_stores',
'Private_Life/Cooking/Tobacco',
'Private_Life/Other',
'Private_Life/Beauty/Make_up',
'Private_Life/Beauty/Jewelry',
'Private_Life/Beauty/Perfumery',
'Sports/Extreme/Snowboarding',
'Sports/Extreme/Rollers',
'Sports/Summer/Ping_pong',
'Sports/Summer/Bikes',
'Sports/Summer/Shoot',
'Sports/Shopping/Sportswear',
'Sports/Shopping/Sports_shops',
'Sports/Shopping/Skis_snowboards',
'Sports/Shopping/Rollers,_skateboards',
'Sports/Shopping/Sports_feed',
'Sports/Shopping/Simulators',
'Sports/Shopping/Bicycles']
संबंधित सवाल
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।