2010-08-19 6 views
33

J'ai tuple de tuples suivants:Ajouter un autre tuple à un tuple de tuples

my_choices=(
     ('1','first choice'), 
     ('2','second choice'), 
     ('3','third choice') 
) 

et je veux ajouter un autre tuple au début de celui-ci

another_choice = ('0', 'zero choice') 

Comment puis-je faire ?

le résultat serait:

final_choices=(
      ('0', 'zero choice') 
      ('1','first choice'), 
      ('2','second choice'), 
      ('3','third choice') 
    ) 
+4

C'est un tuple de tuples, et non une liste de tuples. –

Répondre

36

construire une autre tuple de triplets sur another_choice, puis concaténer:

final_choices = (another_choice,) + my_choices 

Sinon, pensez à faire my_choices une liste-de-tuples au lieu d'un tuple de triplets en utilisant des crochets au lieu de entre parenthèses:

my_choices=[ 
    ('1','first choice'), 
    ('2','second choice'), 
    ('3','third choice') 
] 

Ensuite, vous pouvez simplement faire:

my_choices.insert(0, another_choice) 
0

Qu'est-ce que vous avez est un tuple de tuples, et non une liste de tuples. Les tuples sont en lecture seule. Commencez avec une liste à la place.

>>> my_choices=[ 
...   ('1','first choice'), 
...   ('2','second choice'), 
...   ('3','third choice') 
... ] 
>>> my_choices.insert(0,(0,"another choice")) 
>>> my_choices 
[(0, 'another choice'), ('1', 'first choice'), ('2', 'second choice'), ('3', 'third choice')] 

list.insert (ind, obj) insère obj dans l'index fourni dans une liste ... vous permettant de pousser un objet quelconque dans une position dans la liste.

11

Ne pas convertir en liste et revenir, c'est inutile. + concatène des tuples.

>>> foo = ((1,),(2,),(3,)) 
>>> foo = ((0,),) + foo 
>>> foo 
((0,), (1,), (2,), (3,)) 
+0

Je pensais que vous ne pouviez pas changer de tuples? – Douglas

+0

Vous ne pouvez pas --- mais vous pouvez les redéfinir :) – katrielalex

3

Vous pouvez également utiliser la concaténation de tuple

à savoir


final_choices = (another_choice,) + my_choices