From: "André Erdmann" <dywi@mailerd.de>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/R_overlay:master commit in: roverlay/util/
Date: Thu, 12 Sep 2013 16:36:40 +0000 (UTC) [thread overview]
Message-ID: <1379003415.2cc79dc0280b25cfabdd8c5166a35f61ff17935c.dywi@gentoo> (raw)
commit: 2cc79dc0280b25cfabdd8c5166a35f61ff17935c
Author: André Erdmann <dywi <AT> mailerd <DOT> de>
AuthorDate: Thu Sep 12 16:30:15 2013 +0000
Commit: André Erdmann <dywi <AT> mailerd <DOT> de>
CommitDate: Thu Sep 12 16:30:15 2013 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=2cc79dc0
roverlay/util/dictwalk: dictmerge()
Convert an iterable of iterables with non-unique keys into a dict with one list
per key.
E.g.
[ ( "a", 1, 2 ), ( "a", 2, 3 ), ( "b", 1, 2 ) ]
-> dict( "a": [(1,2),(2,3)], "b": [(1,2)] )
---
roverlay/util/dictwalk.py | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/roverlay/util/dictwalk.py b/roverlay/util/dictwalk.py
index 52a8c61..0813d11 100644
--- a/roverlay/util/dictwalk.py
+++ b/roverlay/util/dictwalk.py
@@ -7,6 +7,27 @@
import roverlay.util.namespace
import roverlay.util.objects
+def dictmerge_inplace ( d, iterable, get_key=None, get_value=None ):
+ keyfunc = ( lambda x: x[0] ) if get_key is None else get_key
+ valfunc = ( lambda x: x[1:] ) if get_value is None else get_value
+
+ for item in iterable:
+ key = keyfunc ( item )
+ val = valfunc ( item )
+ entry = d.get ( key )
+ if entry is None:
+ d[key] = [ val ]
+ else:
+ #assert isinstance ( entry, list )
+ entry.append ( val )
+# --- end of dictmerge_inplace (...) ---
+
+def dictmerge ( iterable, dict_cls=dict, get_key=None, get_value=None ):
+ ret = dict_cls()
+ dictmerge_inplace ( ret, iterable, get_key=get_key, get_value=get_value )
+ return ret
+# --- end of dictmerge (...) ---
+
def dictwalk_create_parent_v ( root, path, dict_create=None, cautious=True ):
"""Creates a dict tree structure using keys the given path. The last path
next reply other threads:[~2013-09-12 16:36 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-09-12 16:36 André Erdmann [this message]
-- strict thread matches above, loose matches on Subject: below --
2016-07-07 4:19 [gentoo-commits] proj/R_overlay:master commit in: roverlay/util/ Benda XU
2015-01-26 17:41 André Erdmann
2014-08-23 19:03 André Erdmann
2014-06-05 22:09 André Erdmann
2014-06-05 22:09 André Erdmann
2014-04-01 16:38 André Erdmann
2014-02-16 16:30 André Erdmann
2014-01-25 18:14 André Erdmann
2013-12-11 18:40 André Erdmann
2013-09-20 15:57 André Erdmann
2013-09-12 16:36 André Erdmann
2013-09-10 14:40 André Erdmann
2013-09-05 10:24 André Erdmann
2013-09-05 9:25 André Erdmann
2013-09-05 9:25 André Erdmann
2013-09-03 15:50 André Erdmann
2013-09-03 15:50 André Erdmann
2013-09-03 12:21 André Erdmann
2013-09-03 8:35 André Erdmann
2013-09-02 16:21 André Erdmann
2013-08-30 14:49 André Erdmann
2013-08-30 14:49 André Erdmann
2013-08-29 13:53 André Erdmann
2013-08-29 12:36 André Erdmann
2013-08-29 12:36 André Erdmann
2013-08-23 13:52 André Erdmann
2013-08-23 13:52 André Erdmann
2013-08-23 13:52 André Erdmann
2013-08-23 13:51 André Erdmann
2013-08-22 9:01 André Erdmann
2013-08-16 6:44 André Erdmann
2013-08-13 8:56 André Erdmann
2013-08-01 12:44 André Erdmann
2013-07-30 18:40 André Erdmann
2013-07-29 14:56 André Erdmann
2013-07-23 14:57 André Erdmann
2013-07-23 14:57 [gentoo-commits] proj/R_overlay:gsoc13/next " André Erdmann
2013-07-23 14:57 ` [gentoo-commits] proj/R_overlay:master " André Erdmann
2013-07-18 19:25 [gentoo-commits] proj/R_overlay:gsoc13/next " André Erdmann
2013-07-23 7:51 ` [gentoo-commits] proj/R_overlay:master " André Erdmann
2013-07-12 13:57 André Erdmann
2013-06-20 23:40 [gentoo-commits] proj/R_overlay:gsoc13/next " André Erdmann
2013-06-22 15:24 ` [gentoo-commits] proj/R_overlay:master " André Erdmann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1379003415.2cc79dc0280b25cfabdd8c5166a35f61ff17935c.dywi@gentoo \
--to=dywi@mailerd.de \
--cc=gentoo-commits@lists.gentoo.org \
--cc=gentoo-dev@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox