Skip to content
Related Articles
Python – Join Tuples if similar initial element
• Last Updated : 10 Jul, 2020

Sometimes, while working with Python tuples, we can have a problem in which we need to perform concatenation of records from the similarity of initial element. This problem can have applications in data domains such as Data Science. Let’s discuss certain ways in which this task can be performed.

Input : test_list = [(5, 6), (5, 7), (5, 8), (6, 10), (7, 13)]
Output : [(5, 6, 7, 8), (6, 10), (7, 13)]

Input : test_list = [(5, 6), (6, 7), (6, 8), (6, 10), (7, 13)]
Output : [(5, 6), (6, 7, 8, 10), (7, 13)]

Method #1 : Using loop
This is brute way in which this task can be done. In this, we create new tuple, if we find no occurrence of similar tuple values previously. Slicing is used to add rest of elements to created tuple.

 `# Python3 code to demonstrate working of ``# Join Tuples if similar initial element``# Using loop`` ` `# initializing list``test_list ``=` `[(``5``, ``6``), (``5``, ``7``), (``6``, ``8``), (``6``, ``10``), (``7``, ``13``)]`` ` `# printing original list``print``(``"The original list is : "` `+` `str``(test_list))`` ` `# Join Tuples if similar initial element``# Using loop``res ``=` `[]``for` `sub ``in` `test_list:                                           ``    ``if` `res ``and` `res[``-``1``][``0``] ``=``=` `sub[``0``]:              ``        ``res[``-``1``].extend(sub[``1``:])                        ``    ``else``:``        ``res.append([ele ``for` `ele ``in` `sub])     ``res ``=` `list``(``map``(``tuple``, res))`` ` `# printing result ``print``(``"The extracted elements : "` `+` `str``(res)) `
Output :

```The original list is : [(5, 6), (5, 7), (6, 8), (6, 10), (7, 13)]
The extracted elements : [(5, 6, 7), (6, 8, 10), (7, 13)]
```

Method #2 : Using `defaultdict()` + loop
The combination of above functions can be used to solve this problem. The advantages it offers from above method are, that it reduces one check of initializing new key, and also works well even if similar elements are not consecutive.

 `# Python3 code to demonstrate working of ``# Join Tuples if similar initial element``# Using defaultdict() + loop``from` `collections ``import` `defaultdict`` ` `# initializing list``test_list ``=` `[(``5``, ``6``), (``5``, ``7``), (``6``, ``8``), (``6``, ``10``), (``7``, ``13``)]`` ` `# printing original list``print``(``"The original list is : "` `+` `str``(test_list))`` ` `# Join Tuples if similar initial element``# Using defaultdict() + loop``mapp ``=` `defaultdict(``list``)``for` `key, val ``in` `test_list:``    ``mapp[key].append(val)``res ``=` `[(key, ``*``val) ``for` `key, val ``in` `mapp.items()]`` ` `# printing result ``print``(``"The extracted elements : "` `+` `str``(res)) `
Output :
```The original list is : [(5, 6), (5, 7), (6, 8), (6, 10), (7, 13)]
The extracted elements : [(5, 6, 7), (6, 8, 10), (7, 13)]
```

Attention geek! Strengthen your foundations with the Python Programming Foundation Course and learn the basics.

To begin with, your interview preparations Enhance your Data Structures concepts with the Python DS Course. And to begin with your Machine Learning Journey, join the Machine Learning – Basic Level Course

My Personal Notes arrow_drop_up