|  |  |  | @ -1,6 +1,6 @@ | 
			
		
	
		
			
				
					|  |  |  |  | #!/usr/bin/ipython -pylab | 
			
		
	
		
			
				
					|  |  |  |  | # | 
			
		
	
		
			
				
					|  |  |  |  | # $Id: sugar.py,v 1.8 2010-10-25 14:42:50 wirawan Exp $ | 
			
		
	
		
			
				
					|  |  |  |  | # $Id: sugar.py,v 1.9 2011-03-10 20:16:58 wirawan Exp $ | 
			
		
	
		
			
				
					|  |  |  |  | # | 
			
		
	
		
			
				
					|  |  |  |  | # Created: 20100121 | 
			
		
	
		
			
				
					|  |  |  |  | # Wirawan Purwanto | 
			
		
	
	
		
			
				
					|  |  |  | @ -45,14 +45,28 @@ else: | 
			
		
	
		
			
				
					|  |  |  |  | #print dir(globals()) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | def dict_slice(Dict, *keys): | 
			
		
	
		
			
				
					|  |  |  |  |   """Returns a shallow copy of the subset of a given dict (or an otherwise | 
			
		
	
		
			
				
					|  |  |  |  |   hashable object) with a given set of keys. | 
			
		
	
		
			
				
					|  |  |  |  |   """Returns a shallow copy of the subset of a given dict (or a dict-like | 
			
		
	
		
			
				
					|  |  |  |  |   object) with a given set of keys. | 
			
		
	
		
			
				
					|  |  |  |  |   The return object is a dict. | 
			
		
	
		
			
				
					|  |  |  |  |   No keys may be missing from Dict. | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   Example: if d = {'abc': 12, 'def': 7, 'ghi': 32, 'jkl': 98 } | 
			
		
	
		
			
				
					|  |  |  |  |   then dict_slice(d, 'abc', 'ghi') will yield {'abc': 12, 'ghi': 32 } | 
			
		
	
		
			
				
					|  |  |  |  |   """ | 
			
		
	
		
			
				
					|  |  |  |  |   return dict([ (k, Dict[k]) for k in keys ]) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | def dict_islice(Dict, *keys): | 
			
		
	
		
			
				
					|  |  |  |  |   """Returns a shallow copy of the subset of a given dict (or an otherwise | 
			
		
	
		
			
				
					|  |  |  |  |   hashable object) with a given set of keys. | 
			
		
	
		
			
				
					|  |  |  |  |   The return object is a dict. | 
			
		
	
		
			
				
					|  |  |  |  |   This is similar to dict_slice, except that missing keys in | 
			
		
	
		
			
				
					|  |  |  |  |   Dict will be ignored. | 
			
		
	
		
			
				
					|  |  |  |  |   """ | 
			
		
	
		
			
				
					|  |  |  |  |   # This is fancy but we require Dict to have keys() function: | 
			
		
	
		
			
				
					|  |  |  |  |   #return dict([ (k, Dict[k]) for k in (set(keys) & set(Dict.keys())) ]) | 
			
		
	
		
			
				
					|  |  |  |  |   # use this one instead, which is milder requirement: | 
			
		
	
		
			
				
					|  |  |  |  |   return dict([ (k, Dict[k]) for k in keys if (k in Dict) ]) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | def dict_join(*dicts): | 
			
		
	
		
			
				
					|  |  |  |  |   """Join multiple dicts into one, updating duplicate keys from left-to-right | 
			
		
	
		
			
				
					|  |  |  |  |   manner. | 
			
		
	
	
		
			
				
					|  |  |  | 
 |