`[(id__1_, 描述, id_type), (id__2_, 描述, id_type), ... , (id__n_, 描述, id_type))]`
这些数据是从属于同一组的文件中加载的。在每个组中,可能会有多个相同的id,每个id来自不同的文件。我不关心重复项,所以我想将所有内容存储到Set类型中。但是有一个问题。
有时,对于相同的id,描述可能会略有不同,如下所示:
`IPI00110753`
- Tubulin alpha-1A chain - Tubulin alpha-1 chain - Alpha-tubulin 1 - Alpha-tubulin isotype M-alpha-1
(请注意,此示例取自uniprot蛋白质数据库。)
我不在意描述的变化。因为我使用的蛋白质数据库可能没有某个标识符的列表,所以我不能将它们丢弃。如果发生这种情况,我将希望能够向生物学家显示可读的人类描述,以便他们大致了解正在查看的蛋白质。
我目前正在使用字典类型来解决这个问题。然而,我并不喜欢这个解决方案,因为它使用了很多内存(我有很多这些ID)。这只是它们的中间列表。这些ID在放入数据库之前还要经过一些额外的处理,因此我希望保持我的数据结构更小。
我有两个问题。首先,如果我使用Set类型(而不是字典类型),是否可以获得更小的内存占用?或者我应该使用排序列表,在每次插入列表时检查ID是否存在?还是有第三种解决方案我没有想到的?其次,如果Set类型是更好的答案,如何将其键入为仅查看元组的第一个元素而不是整个元组?
感谢您阅读我的问题,
Tim
更新
基于我收到的一些评论,让我稍微澄清一下。我在数据结构方面做的大部分工作是将其插入其中。我只读取它两次,一次用来注释附加信息,另一次用来插入数据库。然而,在插入到数据库之前可能会有额外的注释。不幸的是,我现在不知道是否会发生这种情况。现在,我正在研究将此数据存储在不基于哈希表(即字典)的结构中。我希望新结构在插入时相当快速,但由于我只真正地读取它两次,因此可以进行线性读取。我试图摆脱哈希表以节省空间。是否有更好的结构或哈希表是最好的选择?
* 这些信息是我通过查询uniprot获得的Swiss-Prot蛋白质标识符列表。