index_by supports compound index keys.
This commit is contained in:
		@@ -68,6 +68,12 @@ def index_by(objects, *funcs):
 | 
			
		||||
 | 
			
		||||
           index1 = index_by(list_of_specs, 'arch', 'compiler')
 | 
			
		||||
           index2 = index_by(list_of_specs, 'compiler')
 | 
			
		||||
 | 
			
		||||
       You can also index by tuples by passing tuples:
 | 
			
		||||
 | 
			
		||||
           index1 = index_by(list_of_specs, ('arch', 'compiler'))
 | 
			
		||||
 | 
			
		||||
       Keys in the resulting dict will look like ('gcc', 'bgqos_0').
 | 
			
		||||
    """
 | 
			
		||||
    if not funcs:
 | 
			
		||||
        return objects
 | 
			
		||||
@@ -75,6 +81,8 @@ def index_by(objects, *funcs):
 | 
			
		||||
    f = funcs[0]
 | 
			
		||||
    if isinstance(f, basestring):
 | 
			
		||||
        f = lambda x: getattr(x, funcs[0])
 | 
			
		||||
    elif isinstance(f, tuple):
 | 
			
		||||
        f = lambda x: tuple(getattr(x, p) for p in funcs[0])
 | 
			
		||||
 | 
			
		||||
    result = {}
 | 
			
		||||
    for o in objects:
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user