Python >> Tutoriel Python >  >> Python

Comment créer un nombre variable de variables ?

Pour créer un nombre variable de variables en Python, utilisez soit un dictionnaire ou un nommétuple .

Problème : Comment pouvez-vous stocker un nombre variable de variables dans votre code Python ?

Exemple : Considérez qu'il existe une exigence dans laquelle vous devez stocker les spécifications d'un produit dans une seule variable qui comprend un nombre variable de variables utilisées pour stocker différents paramètres du produit. Par exemple, nous voulons stocker les paramètres comme marque nom , modèle, et année de fabrication à l'intérieur d'une autre variable nommée Produit . Le schéma ci-dessous explique le problème en détail.

Ceci est juste un exemple de scénario qui doit être utilisé pour démontrer les solutions à notre énoncé de problème.

Méthode 1 :Utilisation des dictionnaires Python

Le moyen le plus simple d'accomplir notre tâche consiste à utiliser des dictionnaires Python. Un dictionnaire est une collection qui vous permet de stocker des données sous la forme de paires de clés et de valeurs où les clés sont utilisées pour représenter les variables tandis que la valeur représente les valeurs à stocker dans les variables. Pour mieux appréhender le concept des dictionnaires, je vous recommande fortement de jeter un œil à cet article.

Le code suivant vous aidera à comprendre l'utilisation des dictionnaires pour stocker un nombre variable de variables (Merci de lire les commentaires pour mieux comprendre le code) :

product = {
    "brand": 'Apple',
    "model": 'iPhone 11 Pro',
    "year": '2019'
}
print(product)

# If want to access a particular variable, for eg, Brand Name then use:
print("Product Brand is : ", product["brand"])

# If you want to loop through the variables and their corresponding values then use:
for x, y in product.items():
    print(x, ":", y)

Sortie :

{'brand': 'Apple', 'model': 'iPhone 11 Pro', 'year': '2019'}
Product Brand is :  Apple
brand : Apple
model : iPhone 11 Pro
year : 2019

Avant de passer à la solution suivante, discutons d'un scénario différent dans lequel vous devez stocker des marques variables d'un produit avec leurs spécifications. Jetez un œil au diagramme ci-dessous pour visualiser le scénario dont nous parlerons ensuite.

Cela peut ressembler à un scénario complexe, mais avec l'utilisation de dictionnaires python, même de telles situations peuvent être gérées facilement. Le programme ci-dessous montre comment vous pouvez faire face à de telles situations :

products = {
    "Apple": {
        "Brand": "Apple",
        "Model": "iPhone 11 Pro",
        "Year": "2019"
    },
    "Samsung": {
        "Brand": "Samsung",
        "Model": "Galaxy Note 20 Ultra 5G",
        "Year": "2020"
    },
    "Nokia": {
        "Brand": "Nokia",
        "Model": "Nokia C3",
        "Year": "2020"
    }
}

for x, y in products.items():
    print(x, ":", y)

Sortie :

Apple : {'Brand': 'Apple', 'Model': 'iPhone 11 Pro', 'Year': '2019'}
Samsung : {'Brand': 'Samsung', 'Model': 'Galaxy Note 20 Ultra 5G', 'Year': '2020'}
Nokia : {'Brand': 'Nokia', 'Model': 'Nokia C3', 'Year': '2020'}

Essayez-le vous-même dans le shell de code interactif :

Exercice :Exécutez le code. Le résultat correspond-il ?

Méthode 2 :Utiliser getattr()

Une autre façon de stocker un nombre variable de variables peut être accomplie en utilisant une méthode intégrée appelée getattr() . Le getattr() La fonction est utilisée pour renvoyer la valeur d'un attribut spécifié d'un objet. Par conséquent, vous pouvez stocker les valeurs dans les variables et les encapsuler dans une classe, puis récupérer la valeur souhaitée à l'aide du getattr() fonction.

Le code suivant illustre le concept ci-dessus :

class Product:
    brand = "Apple"
    model = "iPhone 11 Pro"
    year = 2020


x = getattr(Product, 'model')
print("brand:", x)

Sortie :

brand: iPhone 11 Pro

Méthode 3 :Utilisation de namedtuple

"namedtuple() ” est un type de conteneur en Python, tout comme les dictionnaires. Il est présent au sein du module collections. Tout comme les dictionnaires, namedtuples se composent également de paires clé-valeur, cependant, dans le cas de namedtuple() vous pouvez accéder à partir des deux clés ainsi qu'aux valeurs, ce qui n'est pas le cas des dictionnaires où vous devez accéder à la valeur à partir de la clé. Contrairement aux dictionnaires namedtuple() est un conteneur ordonné et vous pouvez accéder à ses valeurs à l'aide des numéros d'index.

Examinons le code suivant pour comprendre comment namedtuple() conteneur peut être utilisé pour stocker un nombre variable de variables :

import collections

# declaring the namedtuple()
Product = collections.namedtuple('Apple', ['Brand', 'Model', 'Year'])

# Passing the values
prod = Product('Apple', 'iPhone 11 Pro', '2020')
# Accessing the values using different ways
print("Brand: ", prod[0])
print("Model: ", prod.Model)
print("Year: ", getattr(prod, 'Year'))

Sortie :

Brand:  Apple
Model:  iPhone 11 Pro
Year:  2020

Avant de conclure cet article, j'aimerais aborder un petit concept qui pourrait être utile pour faire face à des situations à nombre variable de variables.

Méthode 4 :Utilisation d'arguments arbitraires (*args)

En Python, nous pouvons passer un nombre variable d'arguments à une fonction en utilisant le symbole spécial *args . Par conséquent, nous pouvons utiliser le symbole * devant un nom de paramètre dans la définition de la fonction pour transmettre un nombre variable d'arguments à la fonction.

Examinons le code suivant pour comprendre l'utilisation de *args :

def my_function(*k):
    print("Brand: ", k[0])
    print("Model: ", k[1])
    print("Year: ", k[0])


my_function("Apple", "iPhone 11 Pro", "2020")

Sortie :

Brand:  Apple
Model:  iPhone 11 Pro
Year:  Apple

Conclusion

Ainsi, à partir des solutions discutées ci-dessus, nous pouvons dire en toute sécurité que python offre une pléthore d'options pour créer et stocker des valeurs dans un nombre variable de variables. J'espère que vous avez trouvé cet article utile et qu'il vous aide à créer facilement un nombre variable de variables en Python.

Restez à l'écoute pour plus de choses intéressantes à l'avenir !