【问题标题】:Clean way to select from many options in Python从 Python 中的许多选项中进行选择的干净方法
【发布时间】:2020-06-15 13:56:22
【问题描述】:

我从事数据科学工作,在清理 Pandas 数据框时遇到的一个典型问题是将列从一种字符串格式转换为另一种格式(特别是,我正在查看的字符串是化学标识符,它们中的每一个都代表一个分子一种晦涩难懂的方式,因此仅通过查看字符串就不容易理解)。我有许多小函数(继承自一个名为 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 格式。

【问题讨论】:

  • 用户如何给出输入输出格式?他是否提交了与某种格式相关联的姓名?
  • 也许你应该开一个会话课?通过阅读您的帖子,这就是我想到的。
  • 您好,感谢大家的快速回复。 @Carcigenicate 我试图使问题更具体,并且我添加了一个示例。希望这会让它更清楚。
  • @JakobSchödl 我应该更清楚地表明我将成为这个函数/脚本的主要用户,因为我每天都会在数据清理中使用它。
  • @QuintenCabo 我对函数或类没有偏好。转换类如何工作?

标签: python python-3.x data-science conventions rdkit


【解决方案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)

【讨论】:

  • 我也认为这可能是最好的方法。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-18
  • 2018-07-27
  • 2018-11-22
  • 2023-03-06
  • 1970-01-01
相关资源
最近更新 更多