Voglio creare un dizionario, dove le chiavi sono espressioni regolari:È possibile utilizzare un'espressione regolare come chiave in un dizionario?
d = {'a.*': some_value1, 'b.*': some_value2}
Poi, quando guardo nel dizionario:
d['apple']
voglio mela 'apple'
essere confrontato con le chiavi che sono espressioni regolari. Se esiste una corrispondenza completa con una chiave/espressione regolare, è necessario restituire il valore corrispondente.
Ad esempio 'apple'
corrispondenze con l'espressione regolare 'a.*'
completamente, quindi some_value1
deve essere restituito.
Ovviamente, tutto ciò presuppone che le chiavi delle espressioni regolari non siano in conflitto (vale a dire che due chiavi non devono corrispondere esattamente alla stessa stringa). Diciamo che posso occuparmi manualmente di questo requisito quando costruisco le mie chiavi.
È possibile in Python? Se è così, sarebbe un costrutto piuttosto elegante e potente!
* "Se è così, sarebbe molto elegante/potente costrutto!" * - No, non sarebbe, perché si può scrivere un numero illimitato di espressioni regolari che corrispondono la stessa stringa. Non stai facendo la domanda giusta. Per favore, spiega quale problema stai cercando di risolvere. – Tomalak
Vuoi due cose incompatibili. Un programma non può determinare se una regex corrisponde a una stringa senza almeno guardare sia la regex e la stringa. Dato un _set_ delle espressioni regolari (le chiavi) e una stringa, l'unico modo per sapere quale regex (es) corrisponde a quella stringa è di provare ogni singola espressione regolare. Ma le prestazioni di un dizionario si basa interamente sulla sua capacità di trovare la chiave corrispondente _without_ dover scorrere tutte le chiavi. Quindi, anche se si potrebbe evitare ogni ambiguità nei vostri tasti, l'esecuzione sarebbe ancora meglio di un elenco di coppie chiave-valore. –