मैं पाइथन के साथ एक पुनरावर्ती विधि बनाना चाहता हूं जो इस शब्दकोश को प्रिंट करता है:

partners = {
        'manager-1': {
            'name': 'Manager 1',
            'children': {
                'manager-2': {
                    'name': 'Manager 2',
                    'children': {
                        'employee-1': {
                            'name': 'Employee 1',
                            'children': {
                                'employee-7': {
                                    'name': 'Employee 7',
                                },
                                'employee-8': {
                                    'name': 'Employee 8',
                                }
                            }
                        },
                        'employee-2': {
                            'name': 'Employee 2',
                        },
                        'employee-3': {
                            'name': 'Employee 3',
                        },
                    },
                },
                'manager-3': {
                    'name': 'Manager 3',
                    'children': {
                        'employee-4': {
                            'name': 'Employee 4',
                        },
                        'employee-5': {
                            'name': 'Employee 5',
                        },
                        'employee-6': {
                            'name': 'Employee 6',
                        },
                    },
                },
                'manager-4': {
                    'name': 'Manager 4',
                },
                'manager-5': {
                    'name': 'Manager 5',
                }
            }
        }
    }

और इसे इस तरह देता है:

--Manager 1
----Manager 2
------Employee 1
--------Employee 7
--------Employee 8
------Employee 2
------Employee 3
----Manager 3
------Manager 4
------Manager 5
------Manager 6
----Manager 4
----Manager 5

मैंने यह विधि बनाई:

def hierarch(partners):
    for partner in partners:
        if 'children' not in partner.keys(): 
            print(partner['name'])
        else:
            hierarch(partner['children'])

और कोड चलाते समय मुझे यह त्रुटि मिली:

AttributeError: 'str' object has no attribute 'keys'

मैं एक स्क्रिप्ट कैसे बना सकता हूं जो मुझे इस पदानुक्रम को मुद्रित करने की अनुमति देता है? मैं शब्दकोशों के साथ वास्तव में अच्छा नहीं हूँ। मैं पायथन 3 के साथ काम कर रहा हूं। कृपया कोई मदद करें? धन्यवाद।

3
Tessnim 3 अक्टूबर 2018, 14:05

1 उत्तर

सबसे बढ़िया उत्तर

क्या आपको सटीक क्रम को पुन: पेश करने की आवश्यकता है? डेटा संरचना को पार करने के लिए आप इस तरह कुछ उपयोग कर सकते हैं:

def recurse(data, level):
    if type(data) is dict:
        if "name" in data:
            print("-" * level + data["name"])
        for (key, value) in data.items():
            recurse(value, level + 1)
recurse(partners, 1)
5
Florian Weimer 3 अक्टूबर 2018, 11:13