पायथन सूची में सेट है


159

मैं पायथन में एक सेट को सूची में कैसे बदल सकता हूं? का उपयोग करते हुए

a = set(["Blah", "Hello"])
a = list(a)

काम नहीं करता है। यह मुझे देता है:

TypeError: 'set' object is not callable
python  list  set 

6
उपरोक्त मेरे लिए पायथन 2.7 पर काम करता है।
एकुस्त जूल

20
यदि आपने अपने कोड में किसी अन्य चर का नाम दिया है, तो setइसे बदलें क्योंकि आप बिलिन फ़ंक्शन को छायांकित कर रहे हैं set
मौड

5
@ मौद नहीं, कोष्ठक में स्ट्रिंग प्रकारTypeError का नाम है , चर का नाम नहीं है
phihag

7
@ जूडेज जॉन डीड: आपने list = some_setकहीं किया। print listकॉल करने से पहले उसे जोड़ें ।
जोहान रिट्जेल

6
मैंने पीडीबी में डिबगिंग के दौरान इस समस्या को मारा जहां 'सूची' को पीडीबी कमांड के रूप में ओवरराइड किया गया है।
WP McNeill

जवाबों:


242

आपका कोड काम करता है (cpython 2.4, 2.5, 2.6, 2.7, 3.1 और 3.2 के साथ परीक्षण किया गया):

>>> a = set(["Blah", "Hello"])
>>> a = list(a) # You probably wrote a = list(a()) here or list = set() above
>>> a
['Blah', 'Hello']

जाँच करें कि आपने listदुर्घटना से अधिलेखित नहीं किया था :

>>> assert list == __builtins__.list

2
मैंने अभी इस सटीक कोड को IDLE में कॉपी और पेस्ट किया है; मुझे त्रुटि मिलती है।

आप के उत्पादन dir(set)और प्रदान कर सकते हैं print set?
सुसम पाल

['and', 'class', 'cmp', 'contains', 'delattr', 'doc', 'eq', 'format', 'ge', 'getattribute', 'gt', 'hash', 'iand', 'init', 'ior', 'isub', 'iter', 'ixor', 'le', 'len', 'lt', 'ne', 'new', 'or', 'rand', 'reduce', 'reduce_ex', 'repr', 'ror', 'rsub', 'rxor', 'setattr', 'sizeof', 'str', 'sub', 'subclasshook', 'xor', 'add', 'clear', 'copy', 'difference', 'difference_update', 'discard', 'intersection', 'intersection_update', 'isdisjoint', 'issubset', 'issuperset', 'pop', 'remove', 'symmetric_difference', 'symmetric_difference_update', 'union', 'update'](चार सीमा के कारण __ हटा दिया गया)

@Judge जॉन डीड आपको किस लाइन पर त्रुटि मिलती है? आपका setलुक ठीक है।
फ़िहाग

सेट के बजाय सेट करने का प्रयास करें: REF: docs.python.org/2/library/sets.html
गोंजालो

72

आपने बिलियन सेट को गलती से एक चर नाम के रूप में उपयोग करके छायांकित कर दिया है, यहाँ अपनी त्रुटि को दोहराने का एक सरल तरीका है

>>> set=set()
>>> set=set()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'set' object is not callable

पहली पंक्ति रिबंड सेट की आवृत्ति के लिए सेट है। दूसरी पंक्ति उस उदाहरण को कॉल करने का प्रयास कर रही है जो निश्चित रूप से विफल हो जाता है।

यहां प्रत्येक चर के लिए अलग-अलग नामों का उपयोग करते हुए एक कम भ्रमित संस्करण है। एक ताजा दुभाषिया का उपयोग करना

>>> a=set()
>>> b=a()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'set' object is not callable

उम्मीद है कि यह स्पष्ट है कि बुला रहा है a एक त्रुटि है


25

लिखने से पहले आपने set(XXXXX) "सेट" का उपयोग एक चर के रूप में किया है

set = 90 #you have used "set" as an object


a = set(["Blah", "Hello"])
a = list(a)

15

यह काम करेगा:

>>> t = [1,1,2,2,3,3,4,5]
>>> print list(set(t))
[1,2,3,4,5]

हालाँकि, यदि आपने "सूची" या "सेट" का प्रयोग चर नाम के रूप में किया है, तो आपको यह मिलेगा:

TypeError: 'set' object is not callable

उदाहरण के लिए:

>>> set = [1,1,2,2,3,3,4,5]
>>> print list(set(set))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'list' object is not callable

यदि आपने "सूची" का उपयोग चर नाम के रूप में किया है तो भी वही त्रुटि होगी।



4

आपका कोड Win7 x64 पर पायथन 3.2.1 के साथ काम करता है

a = set(["Blah", "Hello"])
a = list(a)
type(a)
<class 'list'>

2

मानचित्र और लंबो कार्यों के संयोजन का उपयोग करने का प्रयास करें:

aList = map( lambda x: x, set ([1, 2, 6, 9, 0]) )

यह बहुत सुविधाजनक तरीका है यदि आपके पास स्ट्रिंग में संख्याओं का एक सेट है और आप इसे पूर्णांक की सूची में बदलना चाहते हैं:

aList = map( lambda x: int(x), set (['1', '2', '3', '7', '12']) )
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.