2012-06-29 3 views
5

तुम्हें पता है, सूची चालू करने के लिएपायथन - इस सूची में डुप्लिकेट निकालने का तेज़ तरीका?</p> <pre><code>a = ["hello", "hello", "hi", "hi", "hey"] </code></pre> सूची में <p>:</p> <pre><code>b = ["hello", "hi", "hey"] </code></pre> <p>आप बस इस तरह यह कार्य करें:

b = list(set(a)) 

यह तेजी से और pythonic है।

लेकिन क्या होगा अगर मैं इस सूची चालू करने की आवश्यकता:

a = [["hello", "hi"], ["hello", "hi"], ["how", "what"], ["hello", "hi"], 
    ["how", "what"]] 

रहे हैं:

b = [["hello", "hi"], ["how", "what"]] 

यह करने के लिए pythonic तरीका क्या है?

उत्तर

14
>>> a = [["hello", "hi"], ["hello", "hi"], ["how", "what"], ["hello", "hi"], ["how", "what"]] 
>>> set(map(tuple, a)) 
set([('how', 'what'), ('hello', 'hi')]) 
+1

धन्यवाद बहुत, दोस्त! – Shane

+0

@Shane कोई समस्या नहीं: D – jamylak

1

बस एक और दृष्टिकोण है जो के रूप में अच्छा नहीं है (हालांकि यह जब तक वे orderable हैं unhashable वस्तुओं के लिए काम करता है)

>>> from itertools import groupby 
>>> a = [["hello", "hi"], ["hello", "hi"], ["how", "what"], ["hello", "hi"], ["how", "what"]] 
>>> [k for k, g in groupby(sorted(a))] 
[['hello', 'hi'], ['how', 'what']] 
+0

+1 सूचियों को टुपल्स में कनवर्ट करने के लिए केवल एक होने के लिए नहीं है। उनके उदाहरण में सूची की सूची है जो टुपल्स की सूची नहीं है –

0

मूल आदेश संरक्षित किए जाने की जरूरत है और आप अजगर 2.7 है, तो +

>>> from collections import OrderedDict 
>>> a = [["hello", "hi"], ["hello", "hi"], ["how", "what"], ["hello", "hi"], ["how", "what"]] 
>>> list(OrderedDict.fromkeys(map(tuple, a))) 
[('hello', 'hi'), ('how', 'what')] 

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

  • कोई संबंधित समस्या नहीं^_^