Add another tuple to a tuple of tuples

PythonTuples

Python Problem Overview


I have the following tuple of tuples:

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

and I want to add another tuple to the start of it

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

How can I do this?

the result would be:

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

Python Solutions


Solution 1 - Python

Build another tuple-of-tuples out of another_choice, then concatenate:

final_choices = (another_choice,) + my_choices

Alternately, consider making my_choices a list-of-tuples instead of a tuple-of-tuples by using square brackets instead of parenthesis:

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

Then you could simply do:

my_choices.insert(0, another_choice)

Solution 2 - Python

Don't convert to a list and back, it's needless overhead. + concatenates tuples.

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

Solution 3 - Python

Alternatively, use the tuple concatenation

i.e.


final_choices = (another_choice,) + my_choices

Solution 4 - Python

What you have is a tuple of tuples, not a list of tuples. Tuples are read only. Start with a list instead.

>>> 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) inserts obj at the provided index within a list... allowing you to shove any arbitrary object in any position within the list.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionJohnView Question on Stackoverflow
Solution 1 - PythonDaniel StutzbachView Answer on Stackoverflow
Solution 2 - PythonKatrielView Answer on Stackoverflow
Solution 3 - PythonBrendanView Answer on Stackoverflow
Solution 4 - PythonwhaleyView Answer on Stackoverflow