python - 在两个大字典中查找匹配键并快速完成

标签 python bioinformatics

我试图在两个不同的字典中找到对应的键。每个都有大约 60 万个条目。

比如说:

    myRDP = { 'Actinobacter': 'GATCGA...TCA', 'subtilus sp.': 'ATCGATT...ACT' }
    myNames = { 'Actinobacter': '8924342' }

我想打印出 Actinobacter (8924342) 的值,因为它与 myRDP 中的值匹配。

以下代码有效,但速度很慢:

    for key in myRDP:
        for jey in myNames:
            if key == jey:
                print key, myNames[key]

我尝试了以下方法,但总是导致 KeyError:

    for key in myRDP:
        print myNames[key]

是否有可能在 C 中实现了一个函数来执行此操作?我用谷歌搜索,但似乎没有任何效果。

谢谢。

最佳答案

使用集合,因为它们有一个内置的 intersection 方法,应该很快:

myRDP = { 'Actinobacter': 'GATCGA...TCA', 'subtilus sp.': 'ATCGATT...ACT' }
myNames = { 'Actinobacter': '8924342' }

rdpSet = set(myRDP)
namesSet = set(myNames)

for name in rdpSet.intersection(namesSet):
    print name, myNames[name]

# Prints: Actinobacter 8924342

关于python - 在两个大字典中查找匹配键并快速完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1317410/

相关文章:

python - 制作包含重复元素的列表

python - 隐式推荐系统的K折交叉验证优化

r - 将 GenBank 核苷酸登录转换为基因符号

optimization - 使用 R 拆分字符串和计数字符的更快方法?

python - 如何从python谷歌云函数访问谷歌云存储中文件的文件元数据

python - "new text"标签随机出现在 Plotly 图中

Python Regex - 非贪婪匹配不起作用

python-3.x - 使用 scikit-bio 阅读 fastq 的最快方法

python - 对于 2Gb 文本文件,搁置字典大小 >100Gb

调用 'mkfifo' (Lustre FS) 时 C++ 程序挂起