enumerable utility
Project description
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,
}
```
======
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,
}
```
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
rekey-1.2.3.tar.gz
(4.6 kB
view details)
File details
Details for the file rekey-1.2.3.tar.gz
.
File metadata
- Download URL: rekey-1.2.3.tar.gz
- Upload date:
- Size: 4.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: Python-urllib/3.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9687d501c7631ff337ec0bce0b1071fa57c38cc4f4b615fa0cf9611013406375 |
|
MD5 | 8d952d07d74bc778d7382fb4d2bfec16 |
|
BLAKE2b-256 | b565b839b36308d62d10cf078463dfe3974103982308d1bf7a763b330aab33d8 |