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
Patricia Arquetteoriginal
2024-12-21 01:17:09973parcourir

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']

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']

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']

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, [])

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()

This permet de modifier facilement les types de fichiers reconnus :

get_ext.types['binary'] = ['bin', 'exe']
get_ext('binary')  # returns ['bin', 'exe']

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:
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