{"id":477,"date":"2018-07-08T06:16:07","date_gmt":"2018-07-08T04:16:07","guid":{"rendered":"http:\/\/pythonprogramming.altervista.org\/?p=477"},"modified":"2018-08-27T07:55:31","modified_gmt":"2018-08-27T05:55:31","slug":"merging-dictionaries","status":"publish","type":"post","link":"https:\/\/pythonprogramming.altervista.org\/merging-dictionaries\/","title":{"rendered":"Merging dictionaries summing common key values"},"content":{"rendered":"<h2>Merging from Python 3.5<\/h2>\n<p><a href=\"http:\/\/pythonprogramming.altervista.org\/merging-dictionaries\/dict2\/\" rel=\"attachment wp-att-483\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-483\" src=\"http:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2018\/07\/dict2.png\" alt=\"\" width=\"453\" height=\"362\" srcset=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2018\/07\/dict2.png 738w, https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2018\/07\/dict2-320x256.png 320w\" sizes=\"auto, (max-width: 453px) 100vw, 453px\" \/><\/a><\/p>\n<p><iframe loading=\"lazy\" title=\"Python and dictionaries: merging and summing key values\" width=\"747\" height=\"560\" src=\"https:\/\/www.youtube.com\/embed\/Vr1lfUQRr7A?feature=oembed&amp;enablejsapi=1\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/p>\n<p>With the following code you can merge two dictionary and get also the sum of the value of the common keys.<\/p>\n<pre class=\"lang-py prettyprint prettyprinted\"><code><span class=\"pln\">a <\/span><span class=\"pun\">=<\/span> <span class=\"pun\">{<\/span><span class=\"str\">'a'<\/span><span class=\"pun\">:<\/span> <span class=\"lit\">1<\/span><span class=\"pun\">,<\/span> <span class=\"str\">'b'<\/span><span class=\"pun\">:<\/span> <span class=\"lit\">2<\/span><span class=\"pun\">,<\/span> <span class=\"str\">'c'<\/span><span class=\"pun\">:<\/span> <span class=\"lit\">3<\/span><span class=\"pun\">}<\/span><span class=\"pln\">\r\nb <\/span><span class=\"pun\">=<\/span> <span class=\"pun\">{<\/span><span class=\"str\">'b'<\/span><span class=\"pun\">:<\/span> <span class=\"lit\">3<\/span><span class=\"pun\">,<\/span> <span class=\"str\">'c'<\/span><span class=\"pun\">:<\/span> <span class=\"lit\">4<\/span><span class=\"pun\">,<\/span> <span class=\"str\">'d'<\/span><span class=\"pun\">:<\/span> <span class=\"lit\">5<\/span><span class=\"pun\">}<\/span>\r\n<span class=\"com\"># this sums the the values of common keys<\/span>\r\n<span class=\"kwd\">for<\/span><span class=\"pln\"> k <\/span><span class=\"kwd\">in<\/span><span class=\"pln\"> b<\/span><span class=\"pun\">:<\/span>\r\n    <span class=\"kwd\">if<\/span><span class=\"pln\"> k <\/span><span class=\"kwd\">in<\/span><span class=\"pln\"> a<\/span><span class=\"pun\">:<\/span><span class=\"pln\">\r\n        b<\/span><span class=\"pun\">[<\/span><span class=\"pln\">k<\/span><span class=\"pun\">]<\/span> <span class=\"pun\">=<\/span><span class=\"pln\"> b<\/span><span class=\"pun\">[<\/span><span class=\"pln\">k<\/span><span class=\"pun\">]<\/span> <span class=\"pun\">+<\/span><span class=\"pln\"> a<\/span><span class=\"pun\">[<\/span><span class=\"pln\">k<\/span><span class=\"pun\">]<\/span>\r\n<span class=\"com\"># Merge the two dict with sums of common keys<\/span><span class=\"pln\">\r\nc <\/span><span class=\"pun\">=<\/span> <span class=\"pun\">{**<\/span><span class=\"pln\">a<\/span><span class=\"pun\">,<\/span> <span class=\"pun\">**<\/span><span class=\"pln\">b<\/span><span class=\"pun\">}<\/span>\r\n<span class=\"kwd\">print<\/span><span class=\"pun\">(<\/span><span class=\"pln\">c<\/span><span class=\"pun\">)<\/span>\r\n\r\n<span class=\"pun\">&gt;&gt;&gt;<\/span><span class=\"pln\"> c\r\n<\/span><span class=\"pun\">{<\/span><span class=\"str\">'a'<\/span><span class=\"pun\">:<\/span> <span class=\"lit\">1<\/span><span class=\"pun\">,<\/span> <span class=\"str\">'b'<\/span><span class=\"pun\">:<\/span> <span class=\"lit\">5<\/span><span class=\"pun\">,<\/span> <span class=\"str\">'c'<\/span><span class=\"pun\">:<\/span> <span class=\"lit\">7<\/span><span class=\"pun\">,<\/span> <span class=\"str\">'d'<\/span><span class=\"pun\">:<\/span> <span class=\"lit\">5<\/span><span class=\"pun\">}<\/span><\/code><\/pre>\n<h2>Reusable code<\/h2>\n<p>In this code, instead, you can do the same thing, but with a function that is callable and so the code is nicer, more readeable and you can use it more times withou having to rewrite the &#8216;engine&#8217; of the process.<\/p>\n<pre class=\"lang-py prettyprint prettyprinted\"><code><span class=\"pln\">a <\/span><span class=\"pun\">=<\/span> <span class=\"pun\">{<\/span><span class=\"str\">'a'<\/span><span class=\"pun\">:<\/span> <span class=\"lit\">1<\/span><span class=\"pun\">,<\/span> <span class=\"str\">'b'<\/span><span class=\"pun\">:<\/span> <span class=\"lit\">2<\/span><span class=\"pun\">,<\/span> <span class=\"str\">'c'<\/span><span class=\"pun\">:<\/span> <span class=\"lit\">3<\/span><span class=\"pun\">}<\/span><span class=\"pln\">\r\nb <\/span><span class=\"pun\">=<\/span> <span class=\"pun\">{<\/span><span class=\"str\">'b'<\/span><span class=\"pun\">:<\/span> <span class=\"lit\">3<\/span><span class=\"pun\">,<\/span> <span class=\"str\">'c'<\/span><span class=\"pun\">:<\/span> <span class=\"lit\">4<\/span><span class=\"pun\">,<\/span> <span class=\"str\">'d'<\/span><span class=\"pun\">:<\/span> <span class=\"lit\">5<\/span><span class=\"pun\">}<\/span>\r\n\r\n\r\n<span class=\"kwd\">def<\/span><span class=\"pln\"> mergsum<\/span><span class=\"pun\">(<\/span><span class=\"pln\">a<\/span><span class=\"pun\">,<\/span><span class=\"pln\"> b<\/span><span class=\"pun\">):<\/span>\r\n    <span class=\"kwd\">for<\/span><span class=\"pln\"> k <\/span><span class=\"kwd\">in<\/span><span class=\"pln\"> b<\/span><span class=\"pun\">:<\/span>\r\n        <span class=\"kwd\">if<\/span><span class=\"pln\"> k <\/span><span class=\"kwd\">in<\/span><span class=\"pln\"> a<\/span><span class=\"pun\">:<\/span><span class=\"pln\">\r\n            b<\/span><span class=\"pun\">[<\/span><span class=\"pln\">k<\/span><span class=\"pun\">]<\/span> <span class=\"pun\">=<\/span><span class=\"pln\"> b<\/span><span class=\"pun\">[<\/span><span class=\"pln\">k<\/span><span class=\"pun\">]<\/span> <span class=\"pun\">+<\/span><span class=\"pln\"> a<\/span><span class=\"pun\">[<\/span><span class=\"pln\">k<\/span><span class=\"pun\">]<\/span><span class=\"pln\">\r\n    c <\/span><span class=\"pun\">=<\/span> <span class=\"pun\">{**<\/span><span class=\"pln\">a<\/span><span class=\"pun\">,<\/span> <span class=\"pun\">**<\/span><span class=\"pln\">b<\/span><span class=\"pun\">}<\/span>\r\n    <span class=\"kwd\">return<\/span><span class=\"pln\"> c\r\n\r\n\r\n<\/span><span class=\"kwd\">print<\/span><span class=\"pun\">(<\/span><span class=\"pln\">mergsum<\/span><span class=\"pun\">(<\/span><span class=\"pln\">a<\/span><span class=\"pun\">,<\/span><span class=\"pln\"> b<\/span><span class=\"pun\">))<\/span><\/code><\/pre>\n<script>\r\nvar title = \"Dictionary\";\r\nvar links = [\r\n\t\t\t\/\/'tkinter-using-a-gui-graphic-user-interface-with-python-part-1\/', 'Tkinter part 1: make a window'\r\n[\"https:\/\/pythonprogramming.altervista.org\/how-to-merge-two-dictionaries-in-python\/\",\"Merging two dictionaries\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/merging-dictionaries\/\",\"Merging and summing common keys values\"]\r\n\t\t];\r\n<\/script>\r\n<script>\r\n\t\r\nif (typeof next2 != \"undefined\"){let next2 = 0;}\r\n\t\r\nnext2 = 0;\r\n\thtml = \"\";\/\/<b style='color:coral;font-size:1.2em'>Other posts about \" + title + \"<\/b><br>\";\r\nfor (address of links) \r\n{\r\n\r\n\tif (next2 == 1){\r\n\t\thtml += \"<div style='background:coral'>\";\r\n\t\thtml += \"Next link => <a href='\" + address[0] + \"'>\" + address[1] + \"<\/a>\";\r\n\t\thtml += \"<\/div><br>\";\r\n\t\tnext2 = 0;\r\n\t}\r\n\tif (address[0] == document.URL) {\r\n\t\tnext2 = 1;\r\n\t}\r\n}\r\n\r\nif (typeof next != \"undefined\") {let next = 0;}\r\nif (typeof addressStart != \"undefined\") {let addressStart = \"\";}\r\nnext = 0;\r\naddressStart = \"<a href='\";\r\nfor (address of links) {\r\n\tif (next == 1){\r\n\t\thtml += \">>>\" + addressStart + address[0] + \"'>\" + address[1] + \"<\/a><br>\";\r\n\t\tnext = 0;\r\n\t}\r\n\telse if (addressStart + address[0] != document.URL)\r\n\t{\r\n\t\thtml += addressStart + address[0] + \"'>\" + address[1] + \"<\/a><br>\";\r\n\t}\r\n\telse\r\n\t{\r\n\t\tnext = 1;\r\n\t\tnext_address = address[0]\r\n\t\tnext_title = address[1]\r\n\t\thtml += \"<span style='color:gray'>\" + address[1] + \"<\/span><br>\";\r\n\t}\r\n\r\n}\r\n\r\n\thtml += `<span style=\"font-size:8px\">Powered by <a href=\"https:\/\/pythonprogramming.altervista.org\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-2673\" src=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/06\/altervista2.png\" alt=\"\" width=\"70\" height=\"25\" srcset=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/06\/altervista2.png 156w, https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/06\/altervista2-150x56.png 150w\" sizes=\"auto, (max-width: 70px) 100vw, 70px\" \/>pythonprogramming.altervista.org<\/a><\/span>`\r\n\thtml = \"<div style='background:yellow'>\" + html + \"<\/div>\";\r\n\tdocument.write(html)\r\n<\/script>\n","protected":false},"excerpt":{"rendered":"We&#8217;ve seen how to merge two dictionaries. Now we will see a good practise to merge the keys, summing the values of the common ones.\n<a class=\"moretag\" href=\"https:\/\/pythonprogramming.altervista.org\/merging-dictionaries\/\"> [...]<\/a>","protected":false},"author":1,"featured_media":482,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_crdt_document":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-477","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-examples"],"avopt_banners_inside_post":true,"avopt_banners_on_page":true,"av_copy_from":"","av_sharing_message":"","av_sharing_allowed":false,"av_sharing_on":{"fb":[],"tw":[]},"av_allow_affiliate_banner":false,"av_allow_affiliate_multi_banner":false,"av_show_affiliation_buy_button":false,"av_post_rating":true,"av_have_post_rating_value":false,"av_is_artificial_intelligence_content":false,"_links":{"self":[{"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/posts\/477","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/comments?post=477"}],"version-history":[{"count":8,"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/posts\/477\/revisions"}],"predecessor-version":[{"id":495,"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/posts\/477\/revisions\/495"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/media\/482"}],"wp:attachment":[{"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/media?parent=477"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/categories?post=477"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/tags?post=477"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}