Maison >développement back-end >Tutoriel Python >En Python, obtenir l'index d'un objet dans une liste via un attribut

En Python, obtenir l'index d'un objet dans une liste via un attribut

WBOY
WBOYavant
2023-08-25 16:13:121468parcourir

En Python, obtenir lindex dun objet dans une liste via un attribut

List est une structure de données courante utilisée en Python pour stocker des collections d'objets. Parfois, vous devrez peut-être utiliser la valeur d'une caractéristique spécifique pour trouver l'index d'un élément spécifique dans une liste. Cela peut être un processus difficile, surtout si la liste contient beaucoup de choses, mais Python propose un moyen simple d'obtenir l'index dans une liste d'objets par attribut, que nous explorerons dans cet article.

Grammaire

Pour rechercher un index dans une liste d'objets en fonction d'une propriété, utilisez la syntaxe ci-dessous -

index = next((i for i, obj in enumerate(my_list) if obj.attribute == desired_value), None)
La méthode

next() fournit l'index initial de l'objet dans la liste qui correspond à la valeur de propriété souhaitée et est utilisée dans ce code pour récupérer l'élément suivant dans l'expression du générateur. Si aucun objet ne correspond à la valeur de propriété spécifiée, une valeur None est renvoyée.

Algorithme

  • Vous pouvez parcourir chaque élément d'une liste à l'aide d'une expression génératrice.

  • Vérifiez que la valeur de la propriété de l'objet actuel correspond à la valeur attendue.

  • Si la valeur de l'attribut répond aux exigences, renvoie l'index de l'objet actuel.

  • Si aucun objet ne correspond à la valeur d'attribut spécifiée, Aucun n'est renvoyé.

Exemple

Considérons une situation où le problème est de trouver des fichiers dans une liste d'objets Worker qui représentent un projet avec un attribut de nom spécifique.

class Employee:
   def __init__(self, name, age, salary):
      self.name = name
      self.age = age
      self.salary = salary

employees = [
   Employee("John", 30, 50000),
   Employee("Alice", 25, 45000),
   Employee("Bob", 35, 55000)
]

index = next((i for i, obj in enumerate(employees) if obj.name == "Alice"), None)

print(index)

Sortie

1

Dans cet exemple, nous définissons une classe Employee avec des propriétés de nom, d'âge et de salaire. Ensuite, nous créons une liste d'objets Employee nommés « employés ». Nous voulons trouver l'index de l'objet Employee nommé "Alice". Nous utilisons la fonction next() avec une expression génératrice pour parcourir chaque objet de la liste des employés et vérifier si l'attribut name correspond à la valeur requise. Si un objet correspondant est trouvé, l'index est renvoyé. Si aucun objet ne correspond à la valeur de propriété requise, None est renvoyé. Dans cet exemple, la sortie est 1 car l'objet Employee nommé « Alice » se trouve à l'index 1 dans la liste des employés.

Applications

De nombreuses situations nécessitent de pouvoir obtenir un index dans une liste d'objets via une propriété. Par exemple, si vous disposez d'une liste d'objets qui représentent des articles et que vous souhaitez rechercher l'index d'un produit avec un attribut d'ID spécifique. Si vous disposez d'une liste d'objets qui représentent des clients, vous souhaiterez peut-être également rechercher un index de clients avec un attribut de courrier électronique spécifique. Il existe de nombreuses applications pour cette fonctionnalité, de la création web à l'analyse de données.

Conclusion

Pour résumer, obtenir l'index dans une liste d'objets par attribut est une tâche courante en programmation Python. En utilisant la méthode next() conjointement avec une expression génératrice, nous pouvons déterminer rapidement l'index d'un élément dans une liste en fonction d'une valeur de propriété. Cette fonctionnalité a des applications allant du développement Web à l'analyse de données.

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer