2014-03-19 3 views
16

Ich habe eine Liste namens Paare.Wie kann ich auf jedes Element eines Paares in einer Paarliste zugreifen?

pairs = [("a", 1), ("b", 2), ("c", 3)] 

Und ich kann Elemente wie Zugang:

for x in pairs: 
    print x 

die Ausgabe wie gibt:

('a', 1) ('b', 2) ('c', 3) 

Aber ich will in jedem Paar jedes Element zugreifen zu können, wie in C++, wenn wir Verwenden Sie pair<string, int> wir sind in der Lage, erste Element und zweites Element von x.first und x.second .eg zugreifen.

x = make_pair("a",1) 
x.first= 'a' 
x.second= 1 

Wie kann ich dasselbe in Python tun?

+1

Thanks a lot Sie Menschen. Das war meine erste Frage bei stackoverflow. Erwartete nicht so schnelle und korrekte Antworten. :) – impossible

+0

Wenn die Frage, ist gut, dann ist es egal, ob es Ihr erstes oder nicht ist! ;) – gsamaras

Antwort

17

Verwenden Tupel auspacken:

>>> pairs = [("a", 1), ("b", 2), ("c", 3)] 
>>> for a, b in pairs: 
... print a, b 
... 
a 1 
b 2 
c 3 

Siehe auch: Tuple unpacking in for loops.

1

Ein 2-tuple ist ein Paar. Sie können die ersten und zweiten Elemente wie folgt zugreifen:

x = tuple('a', 1) # make a pair 
x[0] # access 'a' 
x[1] # access 1 
6

Wenn Sie Namen verwenden, versuchen, eine namedtuple wollen:

from collections import namedtuple 

Pair = namedtuple("Pair", ["first", "second"]) 

pairs = [Pair("a", 1), Pair("b", 2), Pair("c", 3)] 

for pair in pairs: 
    print("First = {}, second = {}".format(pair.first, pair.second)) 
0

Wenn Sie pair[0] sagen, das Sie ("a", 1) gibt. Das Ding in Klammern ist ein Tupel, das wie eine Liste eine Art von Sammlung ist. So können Sie auf das erste Element dieser Sache zugreifen, indem Sie [0] oder [1] nach seinem Namen angeben. Alles, was Sie tun müssen, um das erste Element des ersten Elements von pair zu bekommen, ist also pair[0][0]. Oder wenn Sie das zweite Element des dritten Elements möchten, ist es pair[2][1].

0

Sie können auf die Mitglieder über ihren Index im Tupel zugreifen.

lst = [(1,'on'),(2,'onn'),(3,'onnn'),(4,'onnnn'),(5,'onnnnn')] 

def unFld(x): 

    for i in x: 
     print(i[0],' ',i[1]) 

print(unFld(lst)) 

Ausgang:

1 on 

2 onn 

3 onnn 

4 onnnn 

5 onnnnn