obtenir la Clé en valeur, dict, python
Comment puis-je obtenir une clé à partir d'une valeur?
mon dict:
countries = {
"Normal UK project" : "1",
"UK Omnibus project" : "1-Omni",
"Nordic project" : ["11","12","13","14"],
"German project" : "21",
"French project" : "31"
}
mon semi fonctionnement code:
for k, v in countries.items():
if "1" in v:
print k
résultat attendu:
Normal UK project
de sortie réelle:
French project
UK Omnibus project
German project
Normal UK project
Comment puis-je corriger mon code?
if "1" == v:
?si la valeur que je cherche, c'est "12", alors il ne pourrait pas
Tout d'abord, vous devez unifier le type de vos valeurs. Certains sont des chaînes de caractères, certains sont des listes. Mieux utiliser les listes de contacts (certains avec un seul élément), puis votre code devrait fonctionner.
Si vous vous trouvez souvent en essayant d'obtenir la clé de la valeur, peut-être que le dictionnaire est à l'envers?
Je pense que c'est un doublon de la stackoverflow.com/questions/8023306/...
OriginalL'auteur Boosted_d16 | 2014-04-25
Vous devez vous connecter pour publier un commentaire.
Le problème est que les types des valeurs dans le dictionnaire ne sont pas les mêmes, ce qui rend beaucoup plus difficile à utiliser le dictionnaire, non seulement dans ce scénario. Alors que Python permet de cela, vous devriez vraiment penser à l'unité de types dans le dictionnaire, par exemple, faire toutes les listes. Vous pouvez le faire en une seule ligne de code:
Maintenant, chaque chaîne unique est enveloppée dans une liste et de votre code fonctionne correctement.
Sinon, si vous avez à utiliser le dictionnaire dans sa forme actuelle, vous pouvez adapter votre fonction de recherche:
OriginalL'auteur tobias_k
c={}
- tout dictune(valeur) - besoin de connaître cette clé
.index()
ne retourne que la première instance dea
dansc
OriginalL'auteur Юра Панарин
Si vous voulez me faire raccourcir un peu, je pourrais faire
OriginalL'auteur thefourtheye
Le code suivant fournir une autre et une version courte d'obtenir les clés de dictionnaire par une certaine valeur, par l'aide de la liste des inclusions et des dic.items():
OriginalL'auteur Serjik
Votre semi-fonctionnement du code est de retour les autres valeurs, car avec des entrées comme:
..alors
"1" in v
vérifie si la chaîne contient le "1" de caractère, alors qu'avec des entrées comme:..puis il vérifie si la liste contient un élément "1".
La
in
opérateur travaille sur les chaînes et les listes, mais d'une manière différente:Idéalement vos données serait plus cohérent - toutes les listes, ou toutes les chaînes:
OriginalL'auteur dbr
Personnellement, je pense que l'utilisation d'
in
et la fonctionvalues
est plus facile.De sortie est:
OriginalL'auteur Ehsan Ab
OriginalL'auteur Raj Damani