अजगर: एक सेट में प्रविष्टियों को एक स्ट्रिंग में कैसे शामिल किया जाए?


84

मूल रूप से, मैं एक स्ट्रिंग को आउटपुट करने के लिए एक सेट में प्रविष्टियों को एक साथ जोड़ने की कोशिश कर रहा हूं। मैं सूची में शामिल होने के लिए सिंटैक्स का उपयोग करने की कोशिश कर रहा हूं। यहाँ मेरा प्रयास है:

list = ["gathi-109","itcg-0932","mx1-35316"]
set_1 = set(list)
set_2 = set(["mx1-35316"])
set_3 = set_1 - set_2
print set_3.join(", ")

हालाँकि मुझे यह त्रुटि मिली: AttributeError: 'set' object has no attribute 'join'

सेट के लिए बराबर कॉल क्या है?

जवाबों:


165
', '.join(set_3)

joinएक स्ट्रिंग विधि, नहीं एक सेट तरीका है।


14
यदि आपके सेट में पूर्णांक / ', '.join(str(s) for s in set_3)
लोंग हैं,

31

सेट के पास कोई joinविधि नहीं है, लेकिन आप str.joinइसके बजाय उपयोग कर सकते हैं ।

', '.join(set_3)

str.joinविधि सूचियों और सेट सहित किसी भी iterable वस्तु पर काम करेंगे।

नोट: पूर्णांक वाले सेट पर इसका उपयोग करने के बारे में सावधान रहें; शामिल होने के लिए आपको कॉल से पहले पूर्णांकों को स्ट्रिंग में बदलना होगा। उदाहरण के लिए

set_4 = {1, 2}
', '.join(str(s) for s in set_4)

5

joinस्ट्रिंग पर कहा जाता है:

print ", ".join(set_3)

4

और न setही इस listतरह की विधि है join, स्ट्रिंग है:

','.join(set(['a','b','c']))

वैसे आपको listअपने चरों के लिए नाम का उपयोग नहीं करना चाहिए । इसे एक list_, my_listया कुछ अन्य नाम दें क्योंकि listबहुत बार अजगर फ़ंक्शन का उपयोग किया जाता है।


4

सेट के एक आदेश की जरूरत नहीं है - तो आप कर सकते हैं अपने आदेश खो देते हैं जब आप एक सेट, यानी में अपनी सूची में परिवर्तित:

>>> orderedVars = ['0', '1', '2', '3']
>>> setVars = set(orderedVars)
>>> print setVars
('4', '2', '3', '1')

आम तौर पर आदेश रहेगा, लेकिन बड़े सेटों के लिए यह लगभग निश्चित रूप से नहीं होगा।

अंत में, बस लोगों को आश्चर्य हो रहा है, आपको जुड़ने में ',' की आवश्यकता नहीं है।

बस: '' .जोइन (सेट)

:)




0

मैंने एक विधि लिखी जो निम्नलिखित धार के मामलों को संभालती है:

  • आकार एक सेट करें। A ", ".join({'abc'})लौट आएगा "a, b, c"। मेरा वांछित उत्पादन था "abc"
  • पूर्णांक सहित सेट करें।
  • खाली सेट लौटना चाहिए ""
def set_to_str(set_to_convert, separator=", "):
        set_size = len(set_to_convert)
        if not set_size:
            return ""
        elif set_size == 1:
            (element,) = set_to_convert
            return str(element)
        else:
            return separator.join(map(str, set_to_convert))

" ".join({'abc'})वांछित ओ / पी प्राप्त करने के लिए इस्तेमाल किया जा सकता है "abc"उत्तर में निष्पादन योग्य कोड
अभिजीत

दिलचस्प। बस एहसास हुआ कि सेट ('एबीसी') और {'एबीसी'} में अलग-अलग व्यवहार हैं। यही बात मुझे खटक गई।
फर्नांडो इररेज़ावल जी 15

मैंने सेट और शब्दकोश के लिए काम करने के लिए निष्पादन योग्य कोड अपडेट किया है
अभिजीत

FYI करें, {'abc'} एक सेट है। और "".join(set(ip_data))अक्षरों का एक यादृच्छिक क्रम देता है (उदाहरण, 'bca') क्योंकि सेट तीन तत्वों को बनाता है {'a', 'b', 'c'} लेकिन आदेश को संरक्षित नहीं करता है।
फर्नांडो इराज़ालवल जी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.