web-dev-qa-db-fra.com

Comment puis-je accéder à chaque élément d'une paire dans une liste de paires?

J'ai une liste appelée paires.

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

Et je peux accéder aux éléments comme:

for x in pairs:
    print x

ce qui donne une sortie comme:

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

Mais je veux accéder à chaque élément de chaque paire, comme en c ++, si nous utilisons pair<string, int> nous pouvons accéder au premier élément et au deuxième élément par x.first, et x.second.par exemple.

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

Comment puis-je faire de même en python?

21
impossible

Utilisez le déballage du tuple:

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

Voir aussi: Déballage de tuple pour les boucles .

28
alecxe

Si vous souhaitez utiliser des noms, essayez un tuple nommé:

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))
9
Hugh Bothwell

UNE 2-Tuple est une paire. Vous pouvez accéder aux premier et deuxième éléments comme ceci:

x = Tuple('a', 1) # make a pair
x[0] # access 'a'
x[1] # access 1
7
Jayanth Koushik

Quand tu dis pair[0], cela vous donne ("a", 1). La chose entre parenthèses est un Tuple, qui, comme une liste, est un type de collection. Vous pouvez donc accéder au premier élément de cette chose en spécifiant [0] ou [1] après son nom. Donc, tout ce que vous avez à faire pour obtenir le premier élément du premier élément de pair est de dire pair[0][0]. Ou si vous voulez le deuxième élément du troisième élément, c'est pair[2][1].

0
henrebotha