मैं अजगर के लिए नया हूँ, मदद की ज़रूरत है।

मुझे एक हुक्म मिला है।

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
Tigran 25 फरवरी 2017, 11:47

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']
3
Vikash Singh 25 फरवरी 2017, 12:23