从Python中的许多选项中进行选择的干净方法

2024-06-16 13:10:48 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

例如,假设我想将格式“微笑”转换为格式“inchi-keys”,我目前的做法如下:

from rdkit import Chem


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

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

def fancy_multiconverter(input_string, input_format, output_format):
    pass

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


Tags: 数据函数字符串formatinputdef格式化学
1条回答
网友
1楼 · 发布于 2024-06-16 13:10:48

也许这也是@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)

相关问题 更多 >