Dada una lista de tuplas, escriba un programa de Python para ordenar la lista en función de la aparición del primer elemento de las tuplas.
Ejemplos:
Input : [(1, 'Jake'), (2, 'Bob'), (1, 'Cara')] Output : [(1, 'Jake', 'Cara', 2), (2, 'Bob', 1)] Input : [('b', 'ball'), ('a', 'arm'), ('b', 'b'), ('a', 'ant')] Output : [('a', 'arm', 'ant', 2), ('b', 'ball', 'b', 2)]
Enfoque #1: usandodict.fromkeys
El fromkeys()
método devuelve un nuevo diccionario con la secuencia dada de elementos como claves del diccionario. Ahora, una vez que almacenamos el nuevo diccionario en ‘dct’, podemos iterar fácilmente sobre los elementos ‘dct’ y generar los elementos deseados.
# Python3 program to Sort tuple based # on occurrence of first element def sortOnOccurence(lst): dct = {} for i, j in lst: dct.setdefault(i, []).append(j) return([(i, *dict.fromkeys(j), len(j)) for i, j in dct.items()]) # Driver code lst = [(1, 'Jake'), (2, 'Bob'), (1, 'Cara')] print(sortOnOccurence(lst))
[(1, 'Cara', 'Jake', 2), (2, 'Bob', 1)]
Enfoque #2:OrderedDict
desde el módulo de colecciones
Este método es una alternativa al enfoque mencionado anteriormente. Seguimos un enfoque similar pero con un ligero cambio, concatenamos las tuplas mientras iteramos a través de ‘dct’ usando OrderedDict .
# Python3 program to Sort tuple based # on occurrence of first element from collections import OrderedDict def sortOnOccurence(lst): dct = {} for i, j in lst: dct.setdefault(i, []).append(j) return([(k, ) + tuple(OrderedDict.fromkeys(v)) + (len(v), ) for k, v in dct.items()]) # Driver code lst = [(1, 'Jake'), (2, 'Bob'), (1, 'Cara')] print(sortOnOccurence(lst))
[(1, 'Jake', 'Cara', 2), (2, 'Bob', 1)]
Publicación traducida automáticamente
Artículo escrito por Smitha Dinesh Semwal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA