मैं जो दिखता हैमुझे किसी विशेष तत्व के साथ सूचियों की संख्या कैसे प्राप्त हो सकती है?
तरहlistOfLists = [
['a','b','c','d'],
['a','b'],
['a','c'],
['c','c','c','c']
]
मैं सूचियों जो एक विशेष तत्व है की संख्या की गणना करना चाहते सूचियों की एक सूची, की है। उदाहरण के लिए, मेरा आउटपुट
{'a':3,'b':2,'c':3,'d':1}
जैसा कि आप देख सकते हैं, मुझे किसी तत्व की कुल गणना की आवश्यकता नहीं है। "c"
के मामले में, हालांकि इसकी कुल गणना 5 है, आउटपुट 3 है क्योंकि यह केवल 3 सूचियों में होता है।
मैं गणना प्राप्त करने के लिए काउंटर का उपयोग कर रहा हूं। वही नीचे देखा जा सकता है।
line_count_tags = []
for lists in lists_of_lists:
s = set()
for element in lists:
s.add(t)
lines_count_tags.append(list(s))
count = Counter([count for counts in lines_count_tags for count in counts])
तो, जब मैं गिनती प्रिंट, मैं
{'a':3,'c':3,'b':2,'d':1}
मैं वहाँ एक बेहतर तरीका है अपने लक्ष्य को पूरा करने के लिए है कि अगर जानना चाहते हैं मिलता है।
मुझे सीपीथन 2.7.11 पर 'itertools.chain' (~ 40%!) का उपयोग करके बहुत तेजी से निष्पादन मिलता है। फिर भी, 'काउंटर' + 'itertools.chain 'प्रस्तुत किए गए' कच्चे 'विधि से 4 गुना धीमा निष्पादित करता है। – zwer
@zwer एह, निर्भर करता है कि हम किस इनपुट आकार पर चर्चा कर रहे हैं। मेरे समाधान में अधिक ओवरहेड है, लेकिन यदि आप इनपुट आकार बढ़ाते हैं तो यह तेज़ होगा। यही कारण है कि बेंचमार्किंग सभी महत्वपूर्ण नहीं है :) – miradulo
यह सच है कि, मैं अपने स्थान पर गति में काफी अंतर से आश्चर्यचकित था, मैं वास्तव में 'itertools' के लिए उपयोग नहीं किया जाता है, वास्तव में, बहुत कुछ भी - वे हैं आमतौर पर धीमी, लेकिन पसंद को पढ़ने में आसान: डी – zwer