काफी समय से मैं निम्नलिखित समस्या से जूझ रहा हूँ:

निम्नलिखित उदाहरण नेस्टेड सूची पर विचार करें: example_nestedlist = [['Apple', 'Orange'], ['Apple', 'Orange'], ['Apple', 'Banana'], ['Apple', 'Banana', 'Strawberry'], ['Apple', 'Banana', 'Strawberry']]

यह कई नेस्टेड सूचियों में से एक है जो मैं अपने उत्पाद डेटा से उत्पन्न करता हूं, और इनमें से प्रत्येक नेस्टेड सूची (1-100 सूचियों वाली) के लिए मैं नेस्टेड सूची को फिर से बनाना चाहता हूं, जैसे कि इसमें केवल अद्वितीय उप -सूचियां.

अपेक्षित आउटपुट निम्नानुसार हो सकता है: output_nestedlist = [['Apple'], ['Orange'], ['Banana'], ['Strawberry'], ['Apple', 'Banana']]

अपेक्षित उत्पादन हालांकि यहीं तक सीमित नहीं है। उदाहरण के लिए, दूसरी उप-सूची केवल ['Orange'] के बजाय ['Apple', 'Orange'] भी हो सकती है। अंतिम लक्ष्य अद्वितीय उप-सूचियां होना बाकी है, भले ही उन उप-सूचियों में वास्तव में क्या है (या वे कितनी लंबी हैं)।

मैं पहले से ही कई दृष्टिकोणों की खोज कर रहा हूं, उदाहरण के लिए:

  • set() का उपयोग अधिक से अधिक 'भिन्न' अद्वितीय उप-सूचियां उत्पन्न करने के लिए करना।
  • पूरी तरह से समान उप-सूचियों का पता लगाने के लिए set() का उपयोग करते हुए, इस मामले में मैंने सबलिस्ट में प्रदर्शित होने के लिए आइटम का चयन करने के लिए यादृच्छिकरण का उपयोग किया।
  • इन दोनों दृष्टिकोणों का पालन अपवादों को पकड़ने के लिए बनाए गए 'नियमों' की एक बहुतायत से किया गया था।

हालांकि, इसके परिणामस्वरूप (और अभी भी इसका परिणाम है) एक बहुत ही अस्थिर दृष्टिकोण है, क्योंकि यह अब नेस्टेड सूची के अंदर जो कुछ भी है, उसमें समस्या नहीं है। शायद मैं कुछ खो रहा हूँ, और यहाँ पर बस कुछ रबर डकिंग की आवश्यकता है।

लेकिन मुझे आशा है कि कोई मुझे देखने के लिए एक दिशा दे सकता है, सभी मदद की बहुत सराहना की जाती है!

संपादित करें1: यह भी आवश्यक है कि उप-सूचियों का क्रम संरक्षित रहे, क्योंकि इन्हें बाद में अपने विशिष्ट पहचानकर्ता से जोड़ने की आवश्यकता होगी।

0
DvdV 16 जुलाई 2020, 12:25

1 उत्तर

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

नोट: अंतिम उत्तर हटा दिया गया क्योंकि यह आवश्यकता से मेल नहीं खा रहा था।

ऐसा लगता है कि आपको संयोजनों का उपयोग करने की आवश्यकता है। परिणाम मैच की स्थिति:

  1. परिणाम सूची इनपुट सूची के समान लंबाई की होनी चाहिए
  2. result में प्रत्येक आइटम input सूची में संबंधित आइटम का सबसेट होना चाहिए
  3. परिणाम सूची में डुप्लीकेट सबलिस्ट नहीं होने चाहिए।
from itertools import combinations

example_nestedlist = [['Apple', 'Orange'], ['Apple', 'Orange'], ['Apple', 'Banana'], ['Apple', 'Banana', 'Strawberry'], ['Apple', 'Banana', 'Strawberry']]

result = []

def fill_load(sublist):
    for i in range(1, len(sublist) + 1):
        for combo in combinations(sublist, i):
            item = list(combo)
            if item not in result:
                result.append(item)
                return
    result.append(None)

for sublist in example_nestedlist:
    fill_load(sublist)

print(result)

आउटपुट:

[['Apple'], ['Orange'], ['Banana'], ['Strawberry'], ['Apple', 'Banana']]
1
Vijay 16 जुलाई 2020, 16:32