Path: csiph.com!eternal-september.org!reader02.eternal-september.org!news.gegeweb.eu!gegeweb.org!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:45:19 +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:45:18 -0000 (UTC) Injection-Info: pasdenom.info; posting-account="rejoc@free.fr"; posting-host="2a01:cb1d:105:4f00:60b7:252f:25b5:d599"; logging-data="229464"; 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:rqhzlGnCYwHz0Hr+mKKc20c0W0E= In-Reply-To: Xref: csiph.com fr.comp.lang.python:3546 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,