2010-02-27 7 views
5

मैं अजगर में एक सेट में एक सूची मोड़ रही है, इसलिए जैसे:क्या सूची को एक सेट में बदलना है, फिर वापस दोबारा, पायथन में समस्याएं पैदा होती हैं?

request.session['vote_set'] = set(request.session['vote_set']) 

तो मैं आसानी से एक if x in set देखने करते हैं और डुप्लिकेट को निकाल सकते हैं। फिर, जब मैं कर रहा हूं, तो मैं इसे पुनः चालू करता हूं:

request.session['vote_set'] = list(request.session['vote_set']) 

क्या ऐसा करने का कोई बेहतर तरीका है? क्या मैं संभावित रूप से कुछ खतरनाक (या बेवकूफ) कर रहा हूं?

उत्तर

5

यदि आप वास्तव में चाहते थे तो आप डुप्लीकेट खो देंगे।

if x in set(request.session['vote_set']) 

यदि आप चिंतित हैं: यदि यह वास्तव में "वोट" के रूप में अपने नामकरण पता चलता है, तो आप 'खो' था कुछ :)

क्यों नहीं बस की एक सूची है।

हालांकि मुझे आश्चर्य है कि करने के लिए करता है, तो यह सिर्फ सादा की तुलना में धीमी हो जाएगा:,

if x in request.session['vote_set'] 

और आदेश के रूप में दूसरों का उल्लेख किया है, होगा संभावित (सबसे अधिक संभावना) नष्ट हो।

+0

एक सेट में कनवर्ट करना (जिसमें एक बार पूरी सूची को पार करना शामिल है) केवल एक बार सदस्यता का परीक्षण करने के लिए सूची में सदस्यता के लिए परीक्षण की तुलना में धीमा हो जाएगा (जिसमें एक मैच मिलने तक सूची को घुमाने में शामिल है)। यदि सेट बड़ा है और आप इसे एक से अधिक बार उपयोग कर सकते हैं, तो किसी बिंदु पर यह तेज़ी से हो जाएगा; हालांकि यहां मामला होने की संभावना नहीं है। –

1

यदि आप के लिए यह महत्वपूर्ण है, तो आप ऑर्डरिंग खो देंगे।

0

इस तरह आप डुप्लिकेट निकालने और व्यवस्था बनाए रखने (यदि आप परवाह) है: Algorithm - How to delete duplicate elements in a list efficiently?

अन्य उत्तर कैसे एक सेट में एक सूची चालू करने के लिए दिखाया।

संबंधित मुद्दे