Вы также можете попробовать код ниже.
>>> def get_combined_items(tup1, tup2):
... l = list(tup1)
... for item in tup2:
... if item not in l:
... l.append(item)
... return l
...
>>>
>>> if len(some_list) % 2 == 0: # even number of items
... some_list = [tuple(get_combined_items(some_list[i], some_list[i + 1])) for i in range(0, len(some_list) - 1, 2)]
... else:
... last_item = some_list[-1] # save last item
... some_list = [tuple(get_combined_items(some_list[i], some_list[i + 1])) for i in range(0, len(some_list) - 1, 2)]
... some_list = some_list + [last_item]
...
>>> some_list
[('A', 'B', 'IP1', 'N1', 'IP3', 'N3'), ('B', 'C', 'IP2', 'N2', 'IP3', 'N3'), ('D', 'F', 'IP4', 'N4')]
>>>
А если вы хотите попробовать сторонний пакет, то установите ordered-set
, используя pip install ordered-set
.
"pip install упорядоченный набор
Вы можете проверить https://pypi.org/project/ordered-set/.
Примечание: Это просто для поддержания элементов в порядке после передачи объединенного кортежа в set()
.
>>> from ordered_set import OrderedSet
>>>
>>> some_list = [('A','B','IP1','N1'),('A','B','IP3','N3'),('B','C','IP2','N2'),('B','C','IP3','N3'),('D','F','IP4','N4')]
>>>
>>> if len(some_list) % 2 == 0: # even number of items
... some_list = [tuple(OrderedSet(some_list[i] + some_list[i + 1])) for i in range(0, len(some_list) - 1, 2)]
... else:
... last_item = some_list[-1] # save last item
... some_list = [tuple(OrderedSet(some_list[i] + some_list[i + 1])) for i in range(0, len(some_list) - 1, 2)]
... some_list = some_list + [last_item]
...
>>>
>>> some_list
[('A', 'B', 'IP1', 'N1', 'IP3', 'N3'), ('B', 'C', 'IP2', 'N2', 'IP3', 'N3'), ('D', 'F', 'IP4', 'N4')]
>>>