Path: csiph.com!eternal-september.org!reader02.eternal-september.org!paganini.bofh.team!usenet.pasdenom.info!pasdenom.info!.POSTED.2a01:cb1d:105:4f00:60b7:252f:25b5:d599!not-for-mail From: rejoc Newsgroups: fr.comp.lang.python Subject: Re: Extraire d'un dictionnaire un sous-dictionnaire Date: Fri, 28 May 2021 21:52:13 +0200 Organization: pi4 de salon Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 8bit Injection-Date: Fri, 28 May 2021 19:52:13 -0000 (UTC) Injection-Info: pasdenom.info; posting-account="rejoc@free.fr"; posting-host="2a01:cb1d:105:4f00:60b7:252f:25b5:d599"; logging-data="229783"; mail-complaints-to="abuse@pasdenom.info" User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.2; fr; rv:1.9.2.28) Gecko/20120306 Lightning/1.0b2 Thunderbird/3.1.20 Cancel-Lock: sha1:YzRbhueZuE2Y3N7cvGIx6cBDMfA= In-Reply-To: Xref: csiph.com fr.comp.lang.python:3547 Désolé, j'arrive un peu tard... Après, pour la fonction, tu peux extraire les clefs en récupérant la signature et construire ton "keys" dynamiquement... Le 28/05/2021 21:45, rejoc a écrit : > Ca fait pas le job ?? > > new_dict = dict((k, v) for k, v in mondict.items() if k in keys) > > > Le 25/05/2021 00:13, Olivier Miakinen a écrit : >> Bonjour, >> >> Je cherche à résoudre élégamment un problème. Comme souvent j'ai déjà >> une idée de la solution, d'où ma question consistant à extraire un >> sous-dictionnaire d'un dictionnaire. Mais dans un second temps je vais >> exposer le vrai problème au cas où mon idée ne serait pas optimale. >> >> ===== >> >> Voici donc ma question. Supposons que j'ai un dictionnaire, par exemple >> mondict = { "t" : "TRUC", "m" : "MACHIN", "b" : "BIDULE", "c" : >> "CHOSE" }. >> >> J'ai par ailleurs une liste de clés, keys = ["b", "c", "t", "z"], ou >> un tuple >> keys = ("b", "c", "t", "z"), ou un set keys = {"b", "c", "t", "z"}, >> selon ce >> qui sera le plus simple. >> >> Je voudrais, à partir de keys (qu'il soit liste, tuple ou set) et de mon >> dictionnaire, obtenir un dictionnaire ne contenant que les entrées >> présentes >> dans keys, dans mon exemple "b", "c" et "t", pas l'entrée "m", sans >> que cela >> ne provoque une erreur à cause de "z". >> >> Donc : >> resultat = { "t" : "TRUC", "b" : "BIDULE", "c" : "CHOSE" } >> >> ===== >> >> Et maintenant le vrai problème. >> >> Je voudrais appeler une fonction du type : >> def lafonction(b=None, c=None, t=None, z=None): >> .... >> en lui passant les valeurs pour b, c, t et z, si elles existent, se >> trouvant >> dans mon dictionnaire mondict. Du coup un truc du genre : >> lafonction(**mondict) >> mais sans que cela provoque une erreur à cause de l'entrée "m". >> >> >> Cordialement, >