2017-01-01 4 views
-1

Wenn ich habe a = [("1", "2"), ("5", "6")] [("3", "4 "), (" 5 "," 6 ")] [(" 5 "," 7 "), (" 2 "," 3 ")] Wie durchsuche ich die Listen von Tupeln, um eine geordnete eindeutige Liste zu erhalten Tupel sagen: B = [(1, 2), (5, 6), (3, 4), (5, 7), (2 "," 3 ")] Unique = [] für Tupel in a: Wenn Tupel nicht in Unique: Unique.append (Tupel) gibt Liste der Tupel wie a. EDIT: Da keiner der Lösung tatsächlich für mich gearbeitet ich das eigentliche Problem gebe:So suchen Sie eindeutige Tupel in mehreren Tupellisten in Python

Ich habe eine Textdatei mit vier Sätzen, sagen: 1. Dies ist utf-8 line1 2. Dies ist eng Zeile 1 3. Dies ist utf Zeile 2 4. Dies ist eng Zeile 2

Ich extrahiere Zeile 1 und Zeile 3 zu einer Variablen (utfvar) und Zeile 2 und 4 zu (engvar). Dann erstelle Tupel mit: UtfEng = list (zip (utfvar, engvar)). Drucken UtfEng ist:

[('Dies', 'Dies'), ('ist', 'ist') ... ('Linie', 'Linie'), ('1', '1')] [('Dies', 'Dies'), ('ist', 'ist') ... ('Linie', 'Linie'), ('2', '2')] Ich möchte extrahiere eindeutige Tupel aus diesem: [('Dies', 'Dies'), ('ist', 'ist') ... ('Zeile', 'Zeile'), ('1', '1') , ('2', '2')]

+3

Was genau ist 'a'? Ist es eine Liste von Tupellisten? Was Sie jetzt haben, ist nicht sinnvoll. – chepner

+0

sind '(" 5 "," 6 ")' und '(" 6 "," 5 ")' sollten als Duplikate behandelt werden? – RomanPerekhrest

+1

Das ist nicht gültig Python, und es iteriert nicht über die Unterlisten. – jonrsharpe

Antwort

1

als @jonrsharpe schrieb auf Kommentar, das ist kein gültiger Python.

aber sagen wir mal, Sie haben drei Listen.

>>> a = [("1","2"),("5","6")] ;b= [("3","4"), ("5","6")];c= [("5","7"), ("2","3")] 

jene Verschmelzung

>>> a+b+c 

werden Sie geben,

[('1', '2'), ('5', '6'), ('3', '4'), ('5', '6'), ('5', '7'), ('2', '3')] 

dann können Sie

>>> list(set(a+b+c)) 
[('2', '3'), ('1', '2'), ('5', '7'), ('5', '6'), ('3', '4')] 

, die Sie einzigartige Tupel geben.

documentation

0

Unter der Annahme dieses Format von Ihnen eingegebenen Daten (da der Code, den Sie war verstümmelt geschrieben):

a = [[("1","2"),("5","6")], [("3","4"), ("5","6")], [("5","7"), ("2","3")]] 

zuerst die Liste glätten, und dann tun, was Sie taten, bevor:

flattened_list = [item for sublist in a for item in sublist] 

Unique = [] 
for pair in flattened_list: 
    if pair not in Unique: 
     Unique.append(pair) 

print(Unique) 
0

Sie sind Liste der Listen mit Tupeln ...Ich möchte eine Liste der eindeutigen Tupel

Die Lösung collections.Counter-Objekt erzeugen:

import collections 

a = [[("1","2"),("5","6")], [("3","4"), ("5","6")], [("5","7"), ("2","3")]] 
c = collections.Counter([t for l in a for t in l]) 
unique_tuples = [t for t in c.keys()] 

print(unique_tuples) 

Der Ausgang:

[('3', '4'), ('5', '7'), ('1', '2'), ('2', '3'), ('5', '6')] 

https://docs.python.org/3.1/library/collections.html#collections.Counter

+0

sie sind nicht wirklich Liste der Liste scheint es seit wann ich drucken (Typ (myvar)) Ich bekomme zwei Listen: kamal

Verwandte Themen