Je dois sélectionner des éléments d'un dictionnaire d'une certaine valeur ou plus. Je sais comment faire cela avec des listes, Retourne la liste des éléments de la liste supérieurs à une valeur.
Mais je ne suis pas sûr de savoir comment traduire cela en quelque chose de fonctionnel pour un dictionnaire. J'ai réussi à obtenir les balises qui correspondent (je pense) à des valeurs supérieures ou égales à un nombre, mais l'utilisation de ce qui suit donne uniquement les balises:
[i for i in dict if dict.values() >= x]
.items()
renverra des paires (key, value)
que vous pourrez utiliser pour reconstruire une dict
filtrée à l'aide d'une compréhension list alimentée dans le constructeur dict()
, qui acceptera une valeur itérable de (key, value)
tuples aka. notre compréhension de la liste:
>>> d = dict(a=1, b=10, c=30, d=2)
>>> d
{'a': 1, 'c': 30, 'b': 10, 'd': 2}
>>> d = dict((k, v) for k, v in d.items() if v >= 10)
>>> d
{'c': 30, 'b': 10}
Si vous ne vous souciez pas d'exécuter votre code sur une version de python antérieure à la version 2.7, consultez la réponse @opatut à l'aide de "dict comprehensions" :
{k:v for (k,v) in dict.items() if v > something}
Si la solution de nmaier aurait été ma solution, notez que depuis Python 2.7+, il existe une syntaxe " dict comprehension ":
{k:v for (k,v) in dict.items() if v > something}
Trouvé ici: Créer un dictionnaire avec une compréhension de liste en Python . J'ai trouvé ceci en recherchant "la compréhension de la liste de dictionnaires python" dans le top post.
{ .... }
inclut la compréhension du dictk:v
quels éléments ajouter au dictfor (k,v) in dict.items()
this itère sur tous les n-uplets (paires clé-valeur) du dictif v > something
une condition qui doit s'appliquer à chaque valeur à inclureVous voulez dict[i]
pas dict.values()
. dict.values()
renverra la liste complète des valeurs figurant dans le dictionnaire.
dict = {2:5, 6:2}
x = 4
print [dict[i] for i in dict if dict[i] >= x] # prints [5]