J'ai un code comme le suivant :
dicts = [
{'one': 'hello',
'two': 'world',
'three': ['a', 'b', 'c', 'd'],
'four': 'foo'
},
{'one': 'pizza',
'two': 'cake',
'three': ['f', 'g', 'h', 'e'],
'four': 'bar'
}
]
letters = ['q', 'w', 'e', 'r','t','y']
dedup_rows = [row for row in dicts if row['three'][3] not in letters]
L'objectif est que dedup_rows
doit contenir les éléments de dicts
dans laquelle le quatrième élément de la liste stockée dans three
n'est pas contenu dans la liste letters
. Pour l'essentiel, delete row from dicts if row['three'][3] in letters
. La sortie du code ci-dessus serait :
dedup_rows: [
{'one': 'hello',
'two': 'world',
'three': ['a', 'b', 'c', 'd'],
'four': 'foo'
}
]
Le code que j'ai fonctionne, mais en pratique, les deux dicts
y letters
contiennent des centaines de milliers d'éléments chacun et l'exécution est donc lente car chaque itération sur les dicts
nécessite également une itération complète sur letters
.
Existe-t-il une manière plus optimale de procéder en Python ?