rekey
Transform collections into dicts by deriving keys from each item.
Install
pip install rekey
Usage
from rekey import rekey
# key a list of records by id
people = [
{ 'id' : 1, 'name' : 'alice', 'age' : 30 },
{ 'id' : 2, 'name' : 'bob', 'age' : 24 },
{ 'id' : 3, 'name' : 'charlie', 'age' : 88 },
]
rekey(people, 'id')
=> {
1 => { 'id' : 1, 'name' : 'alice', 'age' : 30},
2 => { 'id' : 2, 'name' : 'bob', 'age' : 24},
3 => { 'id' : 3, 'name' : 'charlie', 'age' : 88},
}
# create an id => value map
rekey(people, 'id', 'name')
=> {
1 => 'alice',
2 => 'bob',
3 => 'charlie',
}
# use Rekeyables for built-in functionality
from rekey.rekeyable import RekeyableSet
Point = namedtuple('Point', ['name', 'x', 'y']) # hashable
points = RekeyableSet([
Point(name='home', x=1, y=2),
Point(name='work', x=3, y=6),
])
points.rekey('name')
=> {
'home' : Point(name='home', x=1, y=2),
'work' : Point(name='work', x=3, y=6),
}
# use the Rekeyable mixin to build your own
from rekey.rekeyable import Rekeyable
class MyDict(dict, Rekeyable): pass
MyDict({
'home' : {'distance' : 1, 'weather' : 'sunny' },
'work' : {'distance' : 5, 'weather' : 'foggy' },
}).rekey('weather', 'distance')
> {
'sunny' : 1,
'foggy' : 5,
}