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

例如说:

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

我想打印出放线杆菌(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中实现了此功能?我在Google周围搜索,但似乎无济于事。

谢谢。

最佳答案

使用集合,因为它们具有内置的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/

10-11 07:52