Maison > développement back-end > Tutoriel Python > Comment puis-je sélectionner des variables en Python à l'aide d'une entrée de chaîne ?

Comment puis-je sélectionner des variables en Python à l'aide d'une entrée de chaîne ?

Patricia Arquette
Libérer: 2024-12-21 01:17:09
original
869 Les gens l'ont consulté

How Can I Select Variables in Python Using a String Input?

Sélection de variables par nom de chaîne

Pour sélectionner une variable basée sur une entrée de chaîne, il existe plusieurs approches viables.

Dictionnaire

Un dictionnaire ordinaire convient souvent pour cela tâche :

get_ext = {'text': ['txt', 'doc'],
           'audio': ['mp3', 'wav'],
           'video': ['mp4', 'mkv']}

get_ext['video']  # returns ['mp4', 'mkv']
Copier après la connexion

Fonction

Si une fonction est requise pour des raisons spécifiques, vous pouvez l'attribuer à la méthode get du dictionnaire :

get_ext = get_ext.get  # Equivalent to get_ext = lambda key: get_ext.get(key)
get_ext('video')  # returns ['mp4', 'mkv']
Copier après la connexion

Ceci renverra Aucun pour les clés inconnues par défaut. Pour générer une KeyError à la place, attribuez-la à get_ext.__getitem__ :

get_ext = get_ext.__getitem__  # Equivalent to get_ext = lambda key: get_ext.__getitem__(key)
get_ext('video')  # returns ['mp4', 'mkv']
Copier après la connexion

Valeur par défaut personnalisée

Vous pouvez implémenter une valeur par défaut personnalisée en enveloppant le dictionnaire dans un function:

def get_ext(file_type):
    types = {'text': ['txt', 'doc'],
             'audio': ['mp3', 'wav'],
             'video': ['mp4', 'mkv']}

    return types.get(file_type, [])
Copier après la connexion

Optimisation

Pour éviter de recréer le dictionnaire à chaque appel de fonction, vous pouvez utiliser une classe :

class get_ext(object):
    def __init__(self):
        self.types = {'text': ['txt', 'doc'],
                      'audio': ['mp3', 'wav'],
                      'video': ['mp4', 'mkv']}

    def __call__(self, file_type):
        return self.types.get(file_type, [])

get_ext = get_ext()
Copier après la connexion

This permet de modifier facilement les types de fichiers reconnus :

get_ext.types['binary'] = ['bin', 'exe']
get_ext('binary')  # returns ['bin', 'exe']
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal