Heres the original dict
uid_coins = {'141632864': {'username': 'Guest130679138', 'coins': 0}, '141632884': {'username': 'Guest130679156', 'coins': 39123441}, '141632886': {'username': 'Guest130679158', 'coins': 44006638}}
What I am trying to get
d = {'uid':[141632864, 141632884, 141632886], 'username': ['Guest130679138', 'Guest130679156', 'Guest130679158'], 'coins': [0, 39123441, 44006638]}
The keys in original dict represent uid.
This is my what I have done:
uid = list(uid_coins.keys()) username = [u_data['username'] for u_data in uid_coins.values()] coins = [[u_data['coins'] for u_data in uid_coins.values()]] d = {"uid":uid, "username":username, "coins":coins} dict((key,d[key]) for d in data for key in d)
But I am rather looking for a generalized approach, to achieve without manually declaring the keys again, just so it should work with new keys in the original data.
Advertisement
Answer
Generalized (based on original version by Andrej Kesely):
d = {} for k, v in uid_coins.items(): d.setdefault('uid', []).append(k) for i in v.keys(): d.setdefault(i, []).append(v[i])