Remapping a table's keys

Hi guys, I often run into the problem when I need to systematically rename a bunch of keys in a table. For example, a JSON API returns an object where I need to map "Media Cost" to "adjusted_partner_cost", "Impressions" to "bid_count", etc. One way of doing this is: key_map = { 'Media Cost': 'adjusted_partner_cost', 'Impressions': 'bids_won', 'Day': 'date' } mykeys = {} for k, v in dict_from_elsewhere.items(): if k in key_map: ret[key_map[k]] = v else: ret[k] = dict_from_elsewhere[k] I would love to be able to instead say something like: mykeys = defaultdict(lambda x:x, { 'Media Cost': 'adjusted_partner_cost', 'Impressions': 'bids_won', 'Day': 'date' }) But default functions don't take parameters. Ideas? - Andrey

On Thu, Nov 4, 2010 at 6:07 PM, Andrey Fedorov <anfedorov@gmail.com> wrote:
# Requires Python 2.7+ (dict comprehension) ret = {key_map.get(k, k) : v for k,v in dict_from_elsewhere.items()} Cheers, Chris -- http://blog.rebertia.com

Chris Rebert <pyideas@rebertia.com> writes:
# Requires Python 2.7+ (dict comprehension) ret = {key_map.get(k, k) : v for k,v in dict_from_elsewhere.items()}
If using a Python without dict comprehensions but with generator expressions:: ret = dict( (key_map.get(k, k), v) for (k, v) in dict_from_elsewhere.items()) -- \ “Pinky, are you pondering what I'm pondering?” “Well, I think | `\ so, Brain, but do I really need two tongues?” —_Pinky and The | _o__) Brain_ | Ben Finney

On Thu, Nov 4, 2010 at 6:07 PM, Andrey Fedorov <anfedorov@gmail.com> wrote:
# Requires Python 2.7+ (dict comprehension) ret = {key_map.get(k, k) : v for k,v in dict_from_elsewhere.items()} Cheers, Chris -- http://blog.rebertia.com

Chris Rebert <pyideas@rebertia.com> writes:
# Requires Python 2.7+ (dict comprehension) ret = {key_map.get(k, k) : v for k,v in dict_from_elsewhere.items()}
If using a Python without dict comprehensions but with generator expressions:: ret = dict( (key_map.get(k, k), v) for (k, v) in dict_from_elsewhere.items()) -- \ “Pinky, are you pondering what I'm pondering?” “Well, I think | `\ so, Brain, but do I really need two tongues?” —_Pinky and The | _o__) Brain_ | Ben Finney
participants (3)
-
Andrey Fedorov
-
Ben Finney
-
Chris Rebert