0
votes

Comment rechercher un élément dans une liste à l'aide d'un élément dans une autre liste?

Ce sont les listes que j'ai écrites dans mon code: xxx

J'essaie de créer une fonction dans laquelle l'utilisateur tape le code d'un livre dans la fonction ci-dessous, puis la fonction Lit des informations relatives à ce code de livre. C'est tout ce que j'ai montré jusqu'à présent: xxx

par exemple, si l'utilisateur Type "2" dans la fonction, la fonction doit imprimer quelque chose le long des lignes de :

code: 2 - Titre: Jeu de trônes - Catégorie: Fantasy


5 commentaires

Avez-vous envisagé d'utiliser Dictionnaire dans Python?


Vous pouvez créer une classe pour grouper des données ensemble. Sinon, utilisez impression (nommé [Index], book_categories [index])


S'il vous plaît ne créez pas de classe. La suggestion du dictionnaire est une bonne avance.


Il n'y aurait pas nécessairement rien de mal à définir une classe ici (le module Dataclasses permet de définir une telle classe facile à définir), bien que un nomméTuple pourrait suffire.


Ne pas vandaliser vos messages. En publiant sur ce site, vous avez irrévocablement accordé au réseau de la pile Exchange le droit de distribuer ce contenu sous le CC BY-SA 3.0 License Pour tant que cela voit en forme. Pour les alternatives à Supprimer, voir: J'ai pensé mieux de ma question; Puis-je le supprimer?


4 Réponses :


0
votes

Mieux vaut stocker des informations dans le dictionnaire que dans le format de liste xxx


0 commentaires

0
votes

au lieu d'utiliser 3 listes, utilisez 1 dictionnaire par code:

Vous pouvez le générer à la main ou utiliser cette ligne: xxx

et maintenant vous pouvez trouver un livre Par son code à l'aide de ce dictionnaire: xxx

pour trouver la catégorie d'un livre avec code = 2: xxx

Pour imprimer des informations dans votre format: xxx


0 commentaires

2
votes

Utilisez une DataClass et un dict code>.

from dataclasses import dataclass


@dataclass
class Book:
    id: int  # Not clear if this is necessary
    name: str
    category: str


book_codes = [1 , 2 , 3 , 10] 
book_names = ["Harry Potter" , "Game of Thrones" , "Star Wars" , "War of the Worlds"] 
book_categories = ["Fantasy" , "Fantasy" , "Science-fiction" , "Science-fiction"]

books = {id: Book(id, name, category) for id, name, category in zip(book_codes, book_names, book_categories)}


book_code = int(input("Please enter book code: "))
book = books[book_code]


1 commentaires

Je sais que les fonctions de l'ordre supérieur sont fronçées par Guido, mais je ne peux pas m'empêcher de penser que carte atténuerait une partie de la redondance de ce code et le rendre plus propre: livres = {b. ID: B pour B sur la carte (livre, Book_Codes, Book_Names, Book_Categories)} .



0
votes

En supposant que vous aurez un code de livre unique, il peut être résolu en utilisant,

  • ZIP LI>
  • Filtre LI>
  • lambda li>
  • Liste li> ul>

    Liste forte>: Le constructeur de liste () Prenez un appareil itéérable et renvoie une liste composée d'articles de iTABLES. P>

    Zip: strong> La fonction ZIP () renvoie un itérateur de tuples en fonction des objets iTABLES. P>

    book_codes = [1 , 2 , 3 , 10] 
    book_names = ["Harry Potter" , "Game of Thrones" , "Star Wars" , "War of the Worlds"] 
    book_categories = ["Fantasy" , "Fantasy" , "Science-fiction" , "Science-fiction"]
    
    book_code = int(input("Please enter book code: "))
    result = list(filter(lambda x  : x[0] == book_code ,zip(book_codes,book_names,book_categories)))[0]
    
    print ("Code: {} - Title: {} - Category: {}".format(result[0], result[1], result[2]))
    
    # Output : Code: 2 - Title: Game of Thrones - Category: Fantasy
    


0 commentaires