Duplizierte Datenverkettung in Python auflisten

Ich bin ein Neuling in Python und vor Problem in immer diese Ausgabe

a = [('textVerify', 'AH', 'SELECT SERVICES'), ('textVerify', 'F7', 'test1>'),('audioVerify', '091;0'), ('imageVerify', 'duck.gif'),('imageVerify', 'egg.gif')] 

Ich möchte eine neue Liste erstellen, die alle 0. eindeutigen Elemente wie halten sollte

  audioVerify,imageVerify,textVerify 

So dass das erwartete Ergebnis ist

  ['textVerify',(('AH', 'SELECT SERVICES'), ('F7', 'test1>')) 'audioVerify', ('091;0'), ('imageVerify', ('duck.gif','egg.gif')] 

  • Cc1: error: nicht erkannte Befehlszeilenoption "-Wno-null-conversion" bei der Installation von python-mysql auf mac 10.7.5
  • Python argparse gesetztes Verhalten, wenn keine Argumente vorgesehen sind
  • Wie man Grenzen für die Größenänderung eines Fensters in pygame setzt
  • Python 2.7.9 install esmre mit Fehler 'cl.exe' fehlgeschlagen mit Exit Status 2
  • Python - Verwandeln Sie einen Dateiinhalt in ein binäres Array
  • Python Dezimal vs C # Dezimalpräzision
  • SQLAlchemy Klasse Dekoration für __mapper_args__
  • Python Pandas überprüfen, ob ein Wert mehr als einmal am selben Tag auftritt
  • 4 Solutions collect form web for “Duplizierte Datenverkettung in Python auflisten”

    Du defaultdict lieber ein defaultdict :

     >>> from collections import defaultdict >>> d = defaultdict(list) >>> for item in a: ... d[item[0]].append(item[1:]) ... >>> d defaultdict(<class 'list'>, {'textVerify': [('AH', 'SELECT SERVICES'), ('F7', 'est1>')], 'imageVerify': [('duck.gif',), ('egg.gif',)], 'audioVerify': [('091;0',)]}) 

    Jetzt können Sie auf seine Elemente nach Name / Index zugreifen:

     >>> d['textVerify'] [('AH', 'SELECT SERVICES'), ('F7', 'test1>')] >>> d['textVerify'][0][0] 'AH' 

    Wenn Sie die Reihenfolge der Wörterbuchschlüssel OrderedDict , können Sie ein OrderedDict zusammen mit der .setdefault() Methode verwenden, wie von Ashwini Chaudhary beschrieben:

     >>> d = OrderedDict() >>> for x in a: ... d.setdefault(x[0],[]).append(x[1:]) ... >>> d OrderedDict([('textVerify', [('AH', 'SELECT SERVICES'), ('F7', 'test1>')]), ('audioVerify', [('091;0',)]), ('imageVerify', [('duck.gif',), ('egg.gif',)])]) 

    Mit dict.setdefault() ist das etwas schneller als defaultdict() zumindest für kleine Listen:

     >>> a [('textVerify', 'AH', 'SELECT SERVICES'), ('textVerify', 'F7', 'test1>'), ('audioVerify', '091;0'), ('imageVerify', 'duck.gif'), ('imageVerify', 'egg.gif')] >>> d={} >>> for x in a: ... d.setdefault(x[0],[]).append(x[1:]) ... >>> d {'audioVerify': [('091;0',)], 'textVerify': [('AH', 'SELECT SERVICES'), ('F7', 'test1>')], 'imageVerify': [('duck.gif',), ('egg.gif',)]} >>> d["audioVerify"] [('091;0',)] 
     >>> from collections import defaultdict >>> d = defaultdict(list) >>> _ = [d[i[0]].append(i[1:]) for i in a] >>> d['textVerify'] [('AH', 'SELECT SERVICES'), ('F7', 'test1>')] 
     a = [('textVerify', 'AH', 'SELECT SERVICES'), ('textVerify', 'F7', 'test1>'),('audioVerify', '091;0'), ('imageVerify', 'duck.gif'),('imageVerify', 'egg.gif')] c=set(i[0] for i in a) d=dict() for i in c: m=[] for v in a: if v[0]==i: m.extend(list(v[1:])) if len(m) !=0: d[i]=m print(d) 
    Python ist die beste Programmiersprache der Welt.