【问题标题】:Using a dictionary to execute a method of an object使用字典执行对象的方法
【发布时间】:2018-10-11 07:39:49
【问题描述】:

我正在尝试执行以下代码

def get_data(full_file_path, **kwargs):

    file_extension = full_file_path.split(".")[-1]

    method = {"data":read_table(full_file_path, **kwargs),
              "csv":read_csv(full_file_path, **kwargs)}
    data = pd.method.get(file_extension)

    return data

我收到错误:

File "C:\Users\code\src\data\make_dataset.py", line 7, in get_data
    method = {"data":read_table(full_file_path, **kwargs),
NameError: name 'read_table' is not defined

有人知道是否可以根据字典选择对象的方法吗?

提前致谢。

ps.:是的,我已经导入了 pandas as pd

【问题讨论】:

标签: python python-3.x pandas


【解决方案1】:

Python 中对函数的引用就像普通名称一样。您的代码中的问题是您实际上是在尝试调用字典定义中的函数。为了清楚起见,我已在此版本的函数中将查找拆分为几个步骤:

def get_data(full_file_path, **kwargs):

    file_extension = full_file_path.split(".")[-1]

    method = {"data": pd.read_table,
              "csv": pd.read_csv}
    read = method[file_extension]

    data = read(full_file_path, **kwargs)

    return data

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多