簡體   English   中英

如何將字典/嵌套字典的字典轉換為列表字典

[英]How do I convert dict of dicts/nested dicts into dict of list

這是原始字典

uid_coins = {'141632864': {'username': 'Guest130679138', 'coins': 0}, 
        '141632884': {'username': 'Guest130679156', 'coins': 39123441}, 
        '141632886': {'username': 'Guest130679158', 'coins': 44006638}}

我想得到什么

d = {'uid':[141632864, 141632884, 141632886], 
'username': ['Guest130679138', 'Guest130679156', 'Guest130679158'], 
'coins': [0, 39123441, 44006638]}

原始dict中的鍵代表uid。

這是我所做的:

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)

但我寧願尋找一種通用方法,無需再次手動聲明鍵即可實現,因此它應該與原始數據中的新鍵一起使用。

嘗試:

uid_coins = {
    "141632864": {"username": "Guest130679138", "coins": 0},
    "141632884": {"username": "Guest130679156", "coins": 39123441},
    "141632886": {"username": "Guest130679158", "coins": 44006638},
}

out = {}
for k, v in uid_coins.items():
    out.setdefault("uid", []).append(k)
    out.setdefault("username", []).append(v["username"])
    out.setdefault("coins", []).append(v["coins"])

print(out)

印刷:

{'uid': ['141632864', '141632884', '141632886'], 
 'username': ['Guest130679138', 'Guest130679156', 'Guest130679158'], 
 'coins': [0, 39123441, 44006638]}

與@Andrej Kesely 類似的版本,但帶有defaultdict

from collections import defaultdict

uid_coins = {
    '141632864': {'username': 'Guest130679138', 'coins': 0}, 
    '141632884': {'username': 'Guest130679156', 'coins': 39123441}, 
    '141632886': {'username': 'Guest130679158', 'coins': 44006638}
}

d = defaultdict(list)
for key, value in uid_coins.items():
    d['uid'].append(key)
    d['username'].append(value['username'])
    d['coins'].append(value['coins'])
    

Output:

defaultdict(<class 'list'>, {'uid': ['141632864', '141632884', '141632886'], 'username': ['Guest130679138', 'Guest130679156', 'Guest130679158'], 'coins': [0, 39123441, 44006638]})

概括(基於 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])

這就是您如何從給定字典中以所需格式(如問題所述)獲取 output 的方式。

d = {'uid': list(uid_coins.keys()), 'username': [i['username'] for i in list(uid_coins.values())], 'coins': [i['coins'] for i in list(uid_coins.values())]}

list(uid_coins.keys())將返回您所有的 uid 作為列表。

[i['username'] for i in list(uid_coins.values())]將返回 'username' 值作為列表。

[i['coins'] for i in list(uid_coins.values())]將返回 'coins' 值作為列表。

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM