पर आधारित एक फ्लैट सूची को अनदेखा करें मेरे पास अद्वितीय वस्तुओं की एक विस्तृत सूची है, जिनमें से कुछ दूसरों के साथ दी गई विशेषता साझा कर सकती हैं। मैं दिए गए गुण द्वारा समूहीकृत वस्तुओं के साथ, नेस्टेड सूची-सूची सूचीबद्ध करना चाहता हूं।मनमानी मानदंड
>>> flat = ["Shoes", "pants", "shirt", "tie", "jacket", "hat"]
मैं लंबाई से यह समूह के लिए चाहते हो सकता है, जैसे::
>>> nest_by_length(flat)
[['tie', 'hat'], ['shoes', 'pants', 'shirt'], ['jacket']]
मैं similarquestions और suggestions के एक जोड़े को देखा है एक न्यूनतम उदाहरण के रूप में निम्नलिखित सूची दी। हालांकि, इन सभी मामलों में, घोंसला इनपुट सूची के क्रम पर आधारित है। मेरे मामले में, इनपुट सूची का ऑर्डरिंग पूरी तरह से अप्रत्याशित है, जैसा आउटपुट के लिए उप-सूचियों की संख्या और उप-सूची में आइटम की संख्या है।
क्या यह करने के लिए कोई मानक कार्य या मूर्ख तरीका है? या, अधिक ने संक्षेप में
from itertools import groupby
flat = ["Shoes", "pants", "shirt", "tie", "jacket", "hat"]
result=[]
for k, g in groupby(sorted(flat, key=len), key=len):
result.append(list(g))
print result
:
मैं आपकी पूर्णता की सराहना करता हूं। मुझे संदेह था कि ग्रुपबी जैसे कुछ फ़ंक्शन होंगे जिन्हें मैं नहीं जानता था, लेकिन शब्दकोश चाल सिर्फ चालाक है। धन्यवाद! – Joe