Je peux filtrer le dictionnaire suivant comme:Quelle est la manière non brute de filtrer un dictionnaire Python?
data = {
1: {'name': 'stackoverflow', 'traffic': 'high'},
2: {'name': 'serverfault', 'traffic': 'low'},
3: {'name': 'superuser', 'traffic': 'low'},
4: {'name': 'mathoverflow', 'traffic': 'low'},
}
traffic = 'low'
for k, v in data.items():
if v['traffic'] == traffic:
print k, v
Y at-il une autre façon de faire le filtrage ci-dessus?
Sauf si vous gardez les choses triées d'une certaine manière, le meilleur algorithme que vous aurez est O (n) dans le temps, ce qui est plutôt mcuh ce que vous faites. –
Si cela vous coûte trop cher, vous devez inverser la structure des données, c'est-à-dire accélérer la création des listes de sites avec le trafic foo en même temps que le dictionnaire. – hop
Pour suivre @hop, si vous avez besoin de faire ce type de recherche "beaucoup" sur un jeu de données "immuable", saisissez les éléments de la valeur que vous recherchez. –