Python – Directorio de índice de elementos

Dada una lista de elementos, la tarea es escribir un programa en Python para calcular todos los índices de todos los elementos.

Ejemplos:

Input: test_list = [7, 6, 3, 7, 8, 3, 6, 7, 8]
Output: {8: [4, 8], 3: [2, 5], 6: [1, 6], 7: [0, 3, 7]}
Explanation: 8 occurs at 4th and 8th index, 3 occurs at 2nd and 5th index and so on.

Input: test_list = [7, 6, 3, 7, 8, 3, 6]
Output: {8: [4], 3: [2, 5], 6: [1, 6], 7: [0, 3]}
Explanation: 8 occurs at 4th index, 3 occurs at 2nd and 5th index and so on.

Método n.° 1: usar la comprensión del diccionario + enumerar() + establecer()

En esto, obtenemos todos los índices usando enumerate() para agregar a la lista de índices los valores coincidentes. La comprensión del diccionario se utiliza para la iteración de todos los elementos de la lista. El set() se usa para obtener todos los elementos sin repetición.

Python3

# Python3 code to demonstrate working of
# Index Directory of Elements
# Using dictionary comprehension + enumerate()
  
# initializing list
test_list = [7, 6, 3, 7, 8, 3, 6, 7, 8]
  
# printing original list
print("The original list is : " + str(test_list))
  
# getting each element index values
res = {key: [idx for idx, val in enumerate(test_list) if val == key]
       for key in set(test_list)}
  
# printing result
print("Index Directory : " + str(res))

Producción:

The original list is : [7, 6, 3, 7, 8, 3, 6, 7, 8]
Index Directory : {8: [4, 8], 3: [2, 5], 6: [1, 6], 7: [0, 3, 7]}

Método n.º 2: uso de la comprensión del diccionario + groupby() + enumerate() + sorted() + itemgetter()

En esto, ordenamos y agrupamos elementos similares, usando groupby() y sorted() . El itemgetter() , se usa para obtener valores para ordenar por valores del índice y los valores extraídos usando enumerate() . La comprensión del diccionario se utiliza para obtener un índice emparejado del resultado agrupado.

Python3

# Python3 code to demonstrate working of
# Index Directory of Elements
  
# Using dictionary comprehension + groupby() + 
# enumerate() + sorted() + itemgetter()
from itertools import groupby
from operator import itemgetter
  
# initializing list
test_list = [7, 6, 3, 7, 8, 3, 6, 7, 8]
  
# printing original list
print("The original list is : " + str(test_list))
  
# after grouping after sorting
# and rearranging and assigning values with index
res = {key: [idx for idx, _ in groups] for key, groups in groupby(
    sorted(enumerate(test_list), key=itemgetter(1)), key=itemgetter(1))}
  
# printing result
print("Index Directory : " + str(res))

Producción:

The original list is : [7, 6, 3, 7, 8, 3, 6, 7, 8]
Index Directory : {3: [2, 5], 6: [1, 6], 7: [0, 3, 7], 8: [4, 8]}

Publicación traducida automáticamente

Artículo escrito por manjeet_04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *