2012-02-26 12 views
5

मैं पायथन 2.7 में सेट के संबंध में एक समस्या में भाग गया।पायथन: एक सेट में डुप्लिकेट की अनुमति कैसे दें?

letters = set(str(raw_input("Type letters: "))) 

आप देख सकते हैं, बिंदु बाद में उपयोग के लिए "पत्र" आवंटित करने के लिए कुछ पत्र लिखने के लिए है:

यहाँ उपयुक्त उदाहरण कोड ब्लॉक है। लेकिन अगर मैं "aaabbcdd" "पत्र" के उत्पादन में टाइप रिटर्न

set(['a', 'c', 'b', 'd']) 

मेरे सवाल यह है कि, कोड लिखने के लिए इतना है कि उत्पादन इस तरह डुप्लिकेट की अनुमति देगा:

set(['a','a','a','b','b','c','d','d']) 

?

+7

एक सेट एक डेटा संरचना है कि केवल कभी अद्वितीय तत्व शामिल है। यदि आप डुप्लिकेट चाहते हैं, तो एक अलग डेटा संरचना का उपयोग करें (सेट नहीं)। –

+0

उदाहरण के लिए 'अक्षर = सूची (raw_input ("अक्षर टाइप करें:")) '? –

+0

-1: प्रश्न सामान्य गणितीय परिभाषाओं के साथ ही पाइथन भाषा की उपेक्षा करता है। –

उत्तर

11

set डुप्लिकेट स्टोर नहीं करता है, इसलिए इसे set कहा जाता है। आपको सामान्य str या list का उपयोग करना चाहिए और यदि आवश्यक हो तो इसे सॉर्ट करें।

>>> sorted(raw_input("Type letters: ")) 
Type letters: foobar 
['a', 'b', 'f', 'o', 'o', 'r'] 

एक वैकल्पिक (लेकिन overkill अपने उदाहरण के लिए) मल्टीसेट कंटेनर collections.Counter, अजगर 2.7 से उपलब्ध है।

>>> from collections import Counter 
>>> c = Counter(raw_input("Type letters: ")) 
>>> c 
Counter({'o': 2, 'a': 1, 'r': 1, 'b': 1, 'f': 1}) 
>>> sorted(c.elements()) 
['a', 'b', 'f', 'o', 'o', 'r'] 
+0

हाँ, सेट के बजाय सूची() को आज़माएं() – jisaacstone

+0

ओह। मुझे नहीं पता था। मैं अभी भी इसके लिए नया हूँ। धन्यवाद! – Alex

2

एक सेट परिभाषा आधार पर डुप्लीकेट अनुमति नहीं है। एक साधारण सूची का उपयोग करें।

आपके मामले में:

letters = list(str(raw_input("Type letters: "))) 
print sorted(letters) 
संबंधित मुद्दे