Gestion de 'TypeError : les indices de liste doivent être des entiers ou des tranches, et non des chaînes' en Python lors de la fusion de listes
En Python, tentative d'accès un élément de liste utilisant un index de chaîne entraîne souvent l'erreur « TypeError : les indices de liste doivent être des entiers ou des tranches, pas une chaîne ». Cette erreur se produit généralement lors de la fusion de deux listes en un seul tableau.
Pour éviter cette erreur, il est crucial de s'assurer que l'index utilisé pour accéder aux éléments de la liste est un entier. Vous trouverez ci-dessous les problèmes spécifiques dans le code Python fourni et la manière correcte de les résoudre :
Conversion de array_length en Integer : Dans le code d'origine, array_length est attribué la représentation sous forme de chaîne de la longueur de array_dates. Au lieu de cela, il doit s'agir de la valeur de longueur entière, qui peut être obtenue en utilisant len(array_dates).
array_length = str(len(array_dates)) # Convert to: array_length = len(array_dates)
Utilisation de range() pour Loop : Le for la boucle parcourt les indices de result_array. Cependant, la définition de la boucle utilise array_length comme itérable, qui est une chaîne. Au lieu de cela, utilisez range(array_length) pour parcourir des entiers.
for i in array_length: # Convert to: for i in range(array_length):
Incrémentation automatique de l'index : Dans le code d'origine, i est incrémenté manuellement après chaque itération. Ceci n'est pas nécessaire car la boucle for incrémentera automatiquement la variable d'index.
i += 1 # Remove this line
Approche alternative utilisant zip() :
Alternativement, pour fusionner deux listes d'égale longueur, on peut utiliser la fonction zip(), qui prend les éléments correspondants de chaque liste et crée une nouvelle liste de tuples. Cette approche est souvent plus concise et évite le besoin d'une indexation manuelle.
dates = ['2020-01-01', '2020-01-02', '2020-01-03'] urls = ['www.abc.com', 'www.cnn.com', 'www.nbc.com'] csv_file_path = '/path/to/filename.csv' with open(csv_file_path, 'w') as fout: csv_writer = csv.writer(fout, delimiter=';', lineterminator='\n') result_array = zip(dates, urls) csv_writer.writerows(result_array)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!