Sto cercando di trovare le chiavi corrispondenti in due dizionari diversi. Ciascuno ha circa 600.000 voci.
Dì ad esempio:
myRDP = { 'Actinobacter': 'GATCGA...TCA', 'subtilus sp.': 'ATCGATT...ACT' }
myNames = { 'Actinobacter': '8924342' }
Voglio stampare il valore di Actinobacter (8924342) poiché corrisponde a un valore in myRDP.
Il codice seguente funziona, ma è molto lento:
for key in myRDP:
for jey in myNames:
if key == jey:
print key, myNames[key]
Ho provato quanto segue ma risulta sempre in un KeyError:
for key in myRDP:
print myNames[key]
C'è forse una funzione implementata in C per fare questo? Ho cercato su Google ma niente sembra funzionare.
Grazie.
- Austin Richardson
Usa i set, perché hanno un metodo integrato intersection
che dovrebbe essere veloce:
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