[Tut] Python Print Dictionary Without One Key or Multiple Keys - Printable Version +- Sick Gaming (https://www.sickgaming.net) +-- Forum: Programming (https://www.sickgaming.net/forum-76.html) +--- Forum: Python (https://www.sickgaming.net/forum-83.html) +--- Thread: [Tut] Python Print Dictionary Without One Key or Multiple Keys (/thread-100057.html) |
[Tut] Python Print Dictionary Without One Key or Multiple Keys - xSicKxBot - 10-10-2022 Python Print Dictionary Without One Key or Multiple Keys <div> <div class="kk-star-ratings kksr-auto kksr-align-left kksr-valign-top" data-payload="{"align":"left","id":"769158","slug":"default","valign":"top","ignore":"","reference":"auto","class":"","count":"1","readonly":"","score":"5","best":"5","gap":"5","greet":"Rate this post","legend":"5\/5 - (1 vote)","size":"24","width":"142.5","_legend":"{score}\/{best} - ({count} {votes})","font_factor":"1.25"}"> <div class="kksr-stars"> <div class="kksr-stars-inactive"> <div class="kksr-star" data-star="1" style="padding-right: 5px"> <div class="kksr-icon" style="width: 24px; height: 24px;"></div> </p></div> <div class="kksr-star" data-star="2" style="padding-right: 5px"> <div class="kksr-icon" style="width: 24px; height: 24px;"></div> </p></div> <div class="kksr-star" data-star="3" style="padding-right: 5px"> <div class="kksr-icon" style="width: 24px; height: 24px;"></div> </p></div> <div class="kksr-star" data-star="4" style="padding-right: 5px"> <div class="kksr-icon" style="width: 24px; height: 24px;"></div> </p></div> <div class="kksr-star" data-star="5" style="padding-right: 5px"> <div class="kksr-icon" style="width: 24px; height: 24px;"></div> </p></div> </p></div> <div class="kksr-stars-active" style="width: 142.5px;"> <div class="kksr-star" style="padding-right: 5px"> <div class="kksr-icon" style="width: 24px; height: 24px;"></div> </p></div> <div class="kksr-star" style="padding-right: 5px"> <div class="kksr-icon" style="width: 24px; height: 24px;"></div> </p></div> <div class="kksr-star" style="padding-right: 5px"> <div class="kksr-icon" style="width: 24px; height: 24px;"></div> </p></div> <div class="kksr-star" style="padding-right: 5px"> <div class="kksr-icon" style="width: 24px; height: 24px;"></div> </p></div> <div class="kksr-star" style="padding-right: 5px"> <div class="kksr-icon" style="width: 24px; height: 24px;"></div> </p></div> </p></div> </div> <div class="kksr-legend" style="font-size: 19.2px;"> 5/5 – (1 vote) </div> </div> <p class="has-global-color-8-background-color has-background">The most Pythonic way to print a dictionary except for one or multiple keys is to filter it using dictionary comprehension and pass the filtered dictionary into the <code><a href="https://blog.finxter.com/python-print/" data-type="post" data-id="20731" target="_blank" rel="noreferrer noopener">print()</a></code> function. </p> <p>There are multiple ways to accomplish this and I’ll show you the best ones in this tutorial. Let’s get started! <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f680.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" /> </p> <p class="has-base-background-color has-background"><img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f449.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>Recommended Tutorial</strong>: <a href="https://blog.finxter.com/how-to-filter-a-dictionary-in-python/" data-type="post" data-id="8770" target="_blank" rel="noreferrer noopener">How to Filter a Dictionary in Python</a></p> <h2>Method 1: Dictionary Comprehension</h2> <div class="wp-block-image"> <figure class="aligncenter size-large"><img loading="lazy" width="1024" height="683" src="https://blog.finxter.com/wp-content/uploads/2022/10/image-55-1024x683.png" alt="" class="wp-image-769367" srcset="https://blog.finxter.com/wp-content/uploads/2022/10/image-55-1024x683.png 1024w, https://blog.finxter.com/wp-content/uploads/2022/10/image-55-300x200.png 300w, https://blog.finxter.com/wp-content/uploads/2022/10/image-55-768x512.png 768w, https://blog.finxter.com/wp-content/uploads/2022/10/image-55.png 1407w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure> </div> <p>Say, you have one or more keys stored in a variable <code>ignore_keys</code> that may be a <a href="https://blog.finxter.com/python-lists/" data-type="post" data-id="7332" target="_blank" rel="noreferrer noopener">list</a> or a <a href="https://blog.finxter.com/sets-in-python/" data-type="post" data-id="1908" target="_blank" rel="noreferrer noopener">set</a> for efficiency reasons. </p> <p class="has-global-color-8-background-color has-background">Create a filtered dictionary without one or multiple keys using the dictionary comprehension <code>{k:v for k,v in my_dict.items() if k not in ignore_keys}</code> that iterates over the original dictionary’s key-value pairs and confirms for each key that it doesn’t belong to the ones that should be ignored. </p> <p>Here’s a minimal example:</p> <pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="4" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">ignore_keys = {'x', 'y'} my_dict = {'x': 1, 'y': 2, 'z': 3} filtered_dict = {k:v for k,v in my_dict.items() if k not in ignore_keys} print(filtered_dict) # {'z': 3}</pre> <p>The <code><a rel="noreferrer noopener" href="https://blog.finxter.com/python-dict-items-method/" data-type="post" data-id="37673" target="_blank">dict.items()</a></code> method creates an <a rel="noreferrer noopener" href="https://blog.finxter.com/iterators-iterables-and-itertools/" data-type="post" data-id="29507" target="_blank">iterable</a> of key-value pairs over which we can iterate.</p> <p>The <a rel="noreferrer noopener" href="https://blog.finxter.com/python-membership-not-in-operator/" data-type="post" data-id="34063" target="_blank">membership operator</a> <code>k not in ignore_keys</code> tests if a given key doesn’t belong to the set. </p> <p class="has-global-color-8-background-color has-background"><img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f4a1.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" /> The <a rel="noreferrer noopener" href="https://blog.finxter.com/sets-in-python/" data-type="post" data-id="1908" target="_blank">runtime complexity</a> of the membership check is constant O(1) if you use a set for the <code>ignore_keys</code> data structure. It would be <a rel="noreferrer noopener" href="https://blog.finxter.com/runtime-complexity-of-python-list-methods-easy-table-lookup/" data-type="post" data-id="8723" target="_blank">linear</a> O(n) in the number of elements if you used a list which is not a good idea for that reason.</p> <p>Note that you can also use this approach to <strong><em>print a dictionary except a single key</em></strong> by putting only one key into the ignore list.</p> <p class="has-base-background-color has-background"><img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f449.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>Recommended Tutorial</strong>: <a href="https://blog.finxter.com/python-dictionary-comprehension/" data-type="post" data-id="13313" target="_blank" rel="noreferrer noopener">Dictionary Comprehension in Python</a></p> <h2>Method 2: Simple For Loop with If Condition</h2> <div class="wp-block-image"> <figure class="aligncenter size-large"><img loading="lazy" width="1024" height="683" src="https://blog.finxter.com/wp-content/uploads/2022/10/image-56-1024x683.png" alt="" class="wp-image-769370" srcset="https://blog.finxter.com/wp-content/uploads/2022/10/image-56-1024x683.png 1024w, https://blog.finxter.com/wp-content/uploads/2022/10/image-56-300x200.png 300w, https://blog.finxter.com/wp-content/uploads/2022/10/image-56-768x512.png 768w, https://blog.finxter.com/wp-content/uploads/2022/10/image-56.png 1407w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure> </div> <p class="has-global-color-8-background-color has-background">A not-so-Pythonic but reasonably readable way to print a dict without one or multiple keys is to use a simple <code>for</code> loop with <code>if</code> condition to avoid all keys in the ignore list.</p> <p>Here’s an example using three lines and directly printing the key-value pairs:</p> <pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="4-6" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">ignore_keys = {'x', 'y'} my_dict = {'x': 1, 'y': 2, 'z': 3} for k, v in my_dict.items(): if k not in ignore_keys: print(k, v) </pre> <p>The output:</p> <pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">z 3</pre> <p>Of course, you can modify the output to your own needs. See the customizations of the built-in <code>print()</code> function and its awesome arguments:</p> <p class="has-base-background-color has-background"><img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f449.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>Recommended Tutorial</strong>: <a href="https://blog.finxter.com/python-print/" data-type="post" data-id="20731" target="_blank" rel="noreferrer noopener">Python <code>print()</code> and Separator and End Arguments</a></p> <hr class="wp-block-separator has-alpha-channel-opacity"/> <h2>My Recommendation – Use This Method!</h2> <p>I could have listed many more ways to solve this problem of printing a dict except one or more keys. </p> <p>I have seen super inefficient ways proposed on forums that use <code>exclude_keys</code> that are list types. </p> <p>I have also seen elaborate schemes to use <a href="https://blog.finxter.com/python-set-difference/" data-type="post" data-id="28030" target="_blank" rel="noreferrer noopener">set difference</a> operations or more. </p> <p class="has-global-color-8-background-color has-background">But I don’t recommend anything else than <strong>dict comprehension</strong> if you want to create a filtered dictionary object first and the <strong>simple <code>for</code> loop</strong> if you want to print on the fly. </p> <p>That’s it. <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f44c.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p> <hr class="wp-block-separator has-alpha-channel-opacity"/> </div> https://www.sickgaming.net/blog/2022/10/09/python-print-dictionary-without-one-key-or-multiple-keys/ |