1

我从事数据科学工作,在清理 Pandas 数据帧时遇到的一个典型问题是将列从一种字符串格式转换为另一种格式(特别是,我正在查看的字符串是化学标识符,它们中的每一个都以一种模糊的方式代表一个分子,所以这些字符串并不是仅仅通过查看它们就很容易理解)。我有许多小函数(继承自一个名为 RDKit 的化学库)来进行格式之间的转换,每个转换对(即输入格式和输出格式)大约有一个函数。函数名称太多,难以记住。我想编写一个包装函数,将所有这些聚合成一个具有简洁设计和用户界面的更大的单个。

问题是:给定输入和输出格式,从许多可能的小型转换函数中选择什么是一种干净的方法?我应该使用存储小转换函数名称的字典吗?

例如,假设我想从格式“微笑”转换为格式“inchi keys”,我目前这样做如下:

from rdkit import Chem


def smile2inchikey(smile):
    mol = Chem.MolFromSmiles(smile)
    inchikey = Chem.inchi.MolToInchiKey(mol)
    return inchikey

我想编写以下函数,而不是手动调用smile2inchikey (或Chem.MolFromSmiles和):Chem.inchi.MolToInchiKey

def fancy_multiconverter(input_string, input_format, output_format):
    pass

它将input_string(以格式给出input_format)返回到格式output_format)。

4

1 回答 1

1

也许这也是@Quinten Cabo 的意思,但您可以使用每次转换为的单位。

然后,您可以使用带有函数的字典来与该单元进行转换:

convert_to_reference = {
                         "format1": function1,
                         "format2": function2,
                       }
convert_from_reference = {
                           ...
                         }
reference = convert_to_reference[input("input format: ")](input("input value: "))
output = convert_from_reference[input("output format: ")](reference)
print(output)
于 2020-06-15T14:41:30.893 回答