具有所有父键的python dict循环

2024-09-30 01:20:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python新手,需要帮助。你知道吗

我有个口述

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': 'Сноубординг'
            }
        }
    }

这些是路径。我需要循环每个dict元素并获取所有嵌套键。我希望得到数组。你知道吗

我试着这样做:

   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

但这是错误的。你知道吗

这就是我想要得到的: 私人生活/购物/购物 私人生活/购物/清洁代理

依此类推

谢谢


Tags: pathselfgetvalueresult购物dictparts
1条回答
网友
1楼 · 发布于 2024-09-30 01:20:42

您的递归已关闭。您共享的代码不完整,因此无法帮助完成。你知道吗

但这是你能做的,以得到你想要的:

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']

相关问题 更多 >

    热门问题