Je cherche à faire une liste de clés à partir de certains valeurs
Par exemple:
'a' -> OK -> 'A'
'd' -> NOK
'aa' -> OK -> 'A'
'bb' -> OK -> 'B'
dans l'idée d'obtenir à la fin une liste de valeurs qui ne font partie
d'aucun tableau, et une liste de clés qui n'a jamais été utilisé. Dans
mon exemple, je cherche en sortie:
'd' -> valeur inconnue
'C' -> clé jamais utilisée.
Je peux parser l'intégralité du dictionnaire pour chaque valeur, mais
c'est long.
Je pensais créer un dictionnaire inversé:
inv_dict = { 'a': 'A',
'aa': 'A',
'b': 'B',
etc... }
Mais est-ce qu'il n'existe pas quelquechose de tout fait? Ou une fonction python
qui sait faire ça tout seul?
Je cherche à faire une liste de clés à partir de certains valeurs
Par exemple: 'a' -> OK -> 'A' 'd' -> NOK 'aa' -> OK -> 'A' 'bb' -> OK -> 'B'
dans l'idée d'obtenir à la fin une liste de valeurs qui ne font partie d'aucun tableau, et une liste de clés qui n'a jamais été utilisé. Dans mon exemple, je cherche en sortie: 'd' -> valeur inconnue 'C' -> clé jamais utilisée.
Je peux parser l'intégralité du dictionnaire pour chaque valeur, mais c'est long. Je pensais créer un dictionnaire inversé: inv_dict = { 'a': 'A', 'aa': 'A', 'b': 'B', etc... }
Mais est-ce qu'il n'existe pas quelquechose de tout fait? Ou une fonction python qui sait faire ça tout seul?
inv_dict = dict() for k in d: for v in d[k]: inv_dict[v] = k
Ensuite tu n'as plus qu'à regarder si c'est dedans :
if val in inv_dict: print('{} -> OK -> {}'.format(val, inv_dict[val])) else print('{} -> NOK'.format(val))
Évidemment si tu retrouves la même valeur pour différentes clés, il faut adopter une stratégie différente car là tu va écraser la précédente clé à chaque fois.
for k in d: for v in d[k]: if v in inv_dict: inv_dict[v].append(k) else inv_dict[v] = [k]
-- Benoit Izac
Bonjour,
Le 02/02/2016 à 17:49, Kevin Denis a écrit dans le message
<slrnnb24qi.jrv.kevin@slackwall.local.tux> :
J'ai un dictionnaire qui associe à une clé un tableau de valeurs:
Je cherche à faire une liste de clés à partir de certains valeurs
Par exemple:
'a' -> OK -> 'A'
'd' -> NOK
'aa' -> OK -> 'A'
'bb' -> OK -> 'B'
dans l'idée d'obtenir à la fin une liste de valeurs qui ne font partie
d'aucun tableau, et une liste de clés qui n'a jamais été utilisé. Dans
mon exemple, je cherche en sortie:
'd' -> valeur inconnue
'C' -> clé jamais utilisée.
Je peux parser l'intégralité du dictionnaire pour chaque valeur, mais
c'est long.
Je pensais créer un dictionnaire inversé:
inv_dict = { 'a': 'A',
'aa': 'A',
'b': 'B',
etc... }
Mais est-ce qu'il n'existe pas quelquechose de tout fait? Ou une
fonction python qui sait faire ça tout seul?
inv_dict = dict()
for k in d:
for v in d[k]:
inv_dict[v] = k
Ensuite tu n'as plus qu'à regarder si c'est dedans :
if val in inv_dict:
print('{} -> OK -> {}'.format(val, inv_dict[val]))
else
print('{} -> NOK'.format(val))
Évidemment si tu retrouves la même valeur pour différentes clés, il faut
adopter une stratégie différente car là tu va écraser la précédente clé
à chaque fois.
for k in d:
for v in d[k]:
if v in inv_dict:
inv_dict[v].append(k)
else
inv_dict[v] = [k]
Je cherche à faire une liste de clés à partir de certains valeurs
Par exemple: 'a' -> OK -> 'A' 'd' -> NOK 'aa' -> OK -> 'A' 'bb' -> OK -> 'B'
dans l'idée d'obtenir à la fin une liste de valeurs qui ne font partie d'aucun tableau, et une liste de clés qui n'a jamais été utilisé. Dans mon exemple, je cherche en sortie: 'd' -> valeur inconnue 'C' -> clé jamais utilisée.
Je peux parser l'intégralité du dictionnaire pour chaque valeur, mais c'est long. Je pensais créer un dictionnaire inversé: inv_dict = { 'a': 'A', 'aa': 'A', 'b': 'B', etc... }
Mais est-ce qu'il n'existe pas quelquechose de tout fait? Ou une fonction python qui sait faire ça tout seul?
inv_dict = dict() for k in d: for v in d[k]: inv_dict[v] = k
Ensuite tu n'as plus qu'à regarder si c'est dedans :
if val in inv_dict: print('{} -> OK -> {}'.format(val, inv_dict[val])) else print('{} -> NOK'.format(val))
Évidemment si tu retrouves la même valeur pour différentes clés, il faut adopter une stratégie différente car là tu va écraser la précédente clé à chaque fois.
for k in d: for v in d[k]: if v in inv_dict: inv_dict[v].append(k) else inv_dict[v] = [k]
-- Benoit Izac
Nicolas
Le 02/02/2016 19:20, Benoit Izac a écrit :
Bonjour,
Le 02/02/2016 à 17:49, Kevin Denis a écrit dans le message :
J'ai un dictionnaire qui associe à une clé un tableau de valeurs:
Je cherche à faire une liste de clés à partir de certains valeurs
Par exemple: 'a' -> OK -> 'A' 'd' -> NOK 'aa' -> OK -> 'A' 'bb' -> OK -> 'B'
dans l'idée d'obtenir à la fin une liste de valeurs qui ne font partie d'aucun tableau, et une liste de clés qui n'a jamais été utilisé. Dans mon exemple, je cherche en sortie: 'd' -> valeur inconnue 'C' -> clé jamais utilisée.
Je peux parser l'intégralité du dictionnaire pour chaque valeur, mais c'est long. Je pensais créer un dictionnaire inversé: inv_dict = { 'a': 'A', 'aa': 'A', 'b': 'B', etc... }
Mais est-ce qu'il n'existe pas quelquechose de tout fait? Ou une fonction python qui sait faire ça tout seul?
inv_dict = dict() for k in d: for v in d[k]: inv_dict[v] = k
Ensuite tu n'as plus qu'à regarder si c'est dedans :
if val in inv_dict: print('{} -> OK -> {}'.format(val, inv_dict[val])) else print('{} -> NOK'.format(val))
Évidemment si tu retrouves la même valeur pour différentes clés, il faut adopter une stratégie différente car là tu va écraser la précédente clé à chaque fois.
for k in d: for v in d[k]: if v in inv_dict: inv_dict[v].append(k) else inv_dict[v] = [k]
Petite optimisation :
for k,value in d.iteritems() : for v in value : ...
Ca évite de parser le dictionnaire à nouveau à chaque iteration.
Le 02/02/2016 19:20, Benoit Izac a écrit :
Bonjour,
Le 02/02/2016 à 17:49, Kevin Denis a écrit dans le message
<slrnnb24qi.jrv.kevin@slackwall.local.tux> :
J'ai un dictionnaire qui associe à une clé un tableau de valeurs:
Je cherche à faire une liste de clés à partir de certains valeurs
Par exemple:
'a' -> OK -> 'A'
'd' -> NOK
'aa' -> OK -> 'A'
'bb' -> OK -> 'B'
dans l'idée d'obtenir à la fin une liste de valeurs qui ne font partie
d'aucun tableau, et une liste de clés qui n'a jamais été utilisé. Dans
mon exemple, je cherche en sortie:
'd' -> valeur inconnue
'C' -> clé jamais utilisée.
Je peux parser l'intégralité du dictionnaire pour chaque valeur, mais
c'est long.
Je pensais créer un dictionnaire inversé:
inv_dict = { 'a': 'A',
'aa': 'A',
'b': 'B',
etc... }
Mais est-ce qu'il n'existe pas quelquechose de tout fait? Ou une
fonction python qui sait faire ça tout seul?
inv_dict = dict()
for k in d:
for v in d[k]:
inv_dict[v] = k
Ensuite tu n'as plus qu'à regarder si c'est dedans :
if val in inv_dict:
print('{} -> OK -> {}'.format(val, inv_dict[val]))
else
print('{} -> NOK'.format(val))
Évidemment si tu retrouves la même valeur pour différentes clés, il faut
adopter une stratégie différente car là tu va écraser la précédente clé
à chaque fois.
for k in d:
for v in d[k]:
if v in inv_dict:
inv_dict[v].append(k)
else
inv_dict[v] = [k]
Petite optimisation :
for k,value in d.iteritems() :
for v in value :
...
Ca évite de parser le dictionnaire à nouveau à chaque iteration.
Je cherche à faire une liste de clés à partir de certains valeurs
Par exemple: 'a' -> OK -> 'A' 'd' -> NOK 'aa' -> OK -> 'A' 'bb' -> OK -> 'B'
dans l'idée d'obtenir à la fin une liste de valeurs qui ne font partie d'aucun tableau, et une liste de clés qui n'a jamais été utilisé. Dans mon exemple, je cherche en sortie: 'd' -> valeur inconnue 'C' -> clé jamais utilisée.
Je peux parser l'intégralité du dictionnaire pour chaque valeur, mais c'est long. Je pensais créer un dictionnaire inversé: inv_dict = { 'a': 'A', 'aa': 'A', 'b': 'B', etc... }
Mais est-ce qu'il n'existe pas quelquechose de tout fait? Ou une fonction python qui sait faire ça tout seul?
inv_dict = dict() for k in d: for v in d[k]: inv_dict[v] = k
Ensuite tu n'as plus qu'à regarder si c'est dedans :
if val in inv_dict: print('{} -> OK -> {}'.format(val, inv_dict[val])) else print('{} -> NOK'.format(val))
Évidemment si tu retrouves la même valeur pour différentes clés, il faut adopter une stratégie différente car là tu va écraser la précédente clé à chaque fois.
for k in d: for v in d[k]: if v in inv_dict: inv_dict[v].append(k) else inv_dict[v] = [k]
Petite optimisation :
for k,value in d.iteritems() : for v in value : ...
Ca évite de parser le dictionnaire à nouveau à chaque iteration.