Home >Backend Development >Python Tutorial >How Can I Select Variables in Python Using a String Input?

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

Patricia Arquette
Patricia ArquetteOriginal
2024-12-21 01:17:09870browse

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

Selecting Variables by String Name

To select a variable based on a string input, there are several viable approaches.

Dictionary

An ordinary dictionary is often suitable for this task:

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

get_ext['video']  # returns ['mp4', 'mkv']

Function

If a function is required for specific reasons, you can assign to the get method of the dictionary:

get_ext = get_ext.get  # Equivalent to get_ext = lambda key: get_ext.get(key)
get_ext('video')  # returns ['mp4', 'mkv']

This will return None for unknown keys by default. To raise a KeyError instead, assign to get_ext.__getitem__:

get_ext = get_ext.__getitem__  # Equivalent to get_ext = lambda key: get_ext.__getitem__(key)
get_ext('video')  # returns ['mp4', 'mkv']

Custom Default Value

You can implement a custom default value by wrapping the dictionary in a function:

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

    return types.get(file_type, [])

Optimizing

To avoid recreating the dictionary on every function call, you can use a class:

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 allows for easy modification of recognized file types:

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

The above is the detailed content of How Can I Select Variables in Python Using a String Input?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn