Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन में नेस्टेड डिक्शनरी को फ्लैट डिक्शनरी में बदलें


जैसे-जैसे दुनिया अधिक असंरचित डेटा को अपना रही है, हम डेटा के कई प्रारूपों में आते हैं जहां डेटा संरचना गहरी नेस्टेड हो सकती है जैसे नेस्टेड JSON। पायथन में आंतरिक कुंजियों को बाहरी कुंजियों के साथ जोड़कर नेस्टेड डेटा संरचना से निपटने की क्षमता है। इस लेख में हम एक नेस्टेड डिक्शनरी लेंगे और इसे फ्लैट करेंगे।

पुनरावर्ती दृष्टिकोण का उपयोग करके

इस दृष्टिकोण में हम डिक्शनरी में प्रत्येक आइटम को पुनरावर्ती रूप से संसाधित करने के लिए एक फ़ंक्शन डिज़ाइन करते हैं। हम पैरामीटर के रूप में डिक्शनरी, आउटपुट डिक्शनरी के लिए प्लेसहोल्डर, कुंजी और सेपरेटर पास करते हैं। हम isinstance का उपयोग करके जांचते हैं कि अगला आइटम स्वयं डिक्शनरी है या नहीं और यदि यह डिक्शनरी है तो इसे पुनरावर्ती कॉल के माध्यम से पास करते हैं।

उदाहरण

dictA = {
    "id": "0001",
    "name": "hotdog",
    "image": {
        "url": "images/0001.jpg",
        "thumbnail": {
            "url": "images/thumbnails/0001.jpg",
            "height,width": "2x4"
        }
    }
}

def dict_flatten(in_dict, dict_out=None, parent_key=None, separator="_"):
    if dict_out is None:
        dict_out = {}
    for k, v in in_dict.items():
        k = f"{parent_key}{separator}{k}" if parent_key else k
        if isinstance(v, dict):
            dict_flatten(in_dict=v, dict_out=dict_out, parent_key=k)
            continue
        dict_out[k] = v
    return dict_out

final_dict = dict_flatten(dictA)
print(final_dict)

आउटपुट

{
    'id': '0001',
    'name': 'hotdog',
    'image_url': 'images/0001.jpg',
    'image_thumbnail_url': 'images/thumbnails/0001.jpg',
    'image_thumbnail_height,width': '2x4'
}

cherrypicker के साथ

यह एक मॉड्यूल है जिसे सीधे डिक्शनरी को इनपुट देकर उपयोग किया जा सकता है। डिफ़ॉल्ट सेपरेटर - है।

उदाहरण

from cherrypicker import CherryPicker

dictA = {
    "id": "0001",
    "name": "hotdog",
    "image": {
        "url": "images/0001.jpg",
        "thumbnail": {
            "url": "images/thumbnails/0001.jpg",
            "height,width": "2x4"
        }
    }
}

picker = CherryPicker(dictA)
print(picker.flatten().get())

आउटपुट

{
    'id': '0001',
    'name': 'hotdog',
    'image_url': 'images/0001.jpg',
    'image_thumbnail_url': 'images/thumbnails/0001.jpg',
    'image_thumbnail_height, width': '2x4'
}
  1. - Python Dictionary को List में कैसे बदलें?

    Python Dictionary को List में बदलना Python की डिक्शनरी क्लास में इस उद्देश्य के लिए तीन मेथड्स हैं। items(), keys() और values() मेथड्स क्रमशः की-वैल्यू पेयर्स के टपल, केवल कुंजियाँ और केवल मान समाहित करने वाले व्यू ऑब्जेक्ट्स लौटाते हैं। बिल्ट-इन list मेथड इन व्यू ऑब्जेक्ट्स को सूची ऑब्जेक्ट्स में

  1. - पायथन टुपल को डिक्शनरी में कैसे बदलें?

    एक डिक्शनरी ऑब्जेक्ट को dict() फ़ंक्शन का उपयोग करके बनाया जा सकता है। यह फ़ंक्शन टुपल्स के टुपल को आर्गुमेंट के रूप में लेता है। प्रत्येक टुपल में की-वैल्यू पेयर होता है। >>> t = ((1, a), (2, b)) >>> dict(t) {1: a, 2: b} यदि आप की और वैल्यू को इंटरचेंज करना चाहते हैं: >>&

  1. - Python में String को Dictionary में Convert कैसे करें?

    String को Dictionary में Convert करना तरीका 1: ast.literal_eval() (सुरक्षित) हम ast.literal_eval() का उपयोग यहां String को Python Expression के रूप में Evaluate करने के लिए कर सकते हैं। यह Safely Expression Node या Python Expression वाले String को Evaluate करता है। String या Node में केवल निम्न Py