我有這本字典:
data=[{'first': '0', 'last': 'hg01', 'pay': 0},
{'first': '0', 'last': 'hg75', 'pay': 15},
{'first': '0', 'last': 'hg0', 'pay': 1},
{'first': '0', 'last': 'hg9', 'pay': 13},
{'first': '0', 'last': 'hg0', 'pay': 0},
{'first': '0', 'last': 'hg', 'pay': 13},
{'first': '0', 'last': 'hg76', 'pay': 0},
{'first': '0', 'last': 'hg1', 'pay': 9},
{'first': '0', 'last': 'hg81', 'pay': 13},
{'first': '0', 'last': 'hg12', 'pay': 1},
{'first': '0', 'last': 'hg03', 'pay': 15},
{'first': '0', 'last': 'hg11', 'pay': 9},
{'first': '0', 'last': 'hg1', 'pay': 1}]
我想用字典或串列理解轉換為這本字典:
output={0: {'hg76':{'first': '0'},'hg0':{'first': '0'},'hg01':{'first': '0'}},
15: {'hg75':{'first': '0'},'hg03':{'first': '0'}},
1: {'hg1':{'first': '0'},'hg12':{'first': '0'},'hg0':{'first': '0'}},
13: {'hg81':{'first': '0'},'hg':{'first': '0'},'hg9':{'first': '0'}},
9: {'hg1':{'first': '0'},'hg11':{'first': '0'}}}
我對這個問題沒有任何想法
uj5u.com熱心網友回復:
這可以通過嵌套理解來完成,無需任何包:
data=[{'first': '0', 'last': 'hg01', 'pay': 0},
{'first': '0', 'last': 'hg75', 'pay': 15},
{'first': '0', 'last': 'hg0', 'pay': 1},
{'first': '0', 'last': 'hg9', 'pay': 13},
{'first': '0', 'last': 'hg0', 'pay': 0},
{'first': '0', 'last': 'hg', 'pay': 13},
{'first': '0', 'last': 'hg76', 'pay': 0},
{'first': '0', 'last': 'hg1', 'pay': 9},
{'first': '0', 'last': 'hg81', 'pay': 13},
{'first': '0', 'last': 'hg12', 'pay': 1},
{'first': '0', 'last': 'hg03', 'pay': 15},
{'first': '0', 'last': 'hg11', 'pay': 9},
{'first': '0', 'last': 'hg1', 'pay': 1}]
unique_pay_vals = {d['pay'] for d in data}
new_dict = {p: {d['last']: {'first': d['first']} for d in data if d['pay'] == p}
for p in unique_pay_vals}
print(new_dict)
# {0: {'hg01': {'first': '0'}, 'hg0': {'first': '0'}, 'hg76': {'first': '0'}}}
# {1: {'hg0': {'first': '0'}, 'hg12': {'first': '0'}, 'hg1': {'first': '0'}}}
# {9: {'hg1': {'first': '0'}, 'hg11': {'first': '0'}}}
# {13: {'hg9': {'first': '0'}, 'hg': {'first': '0'}, 'hg81': {'first': '0'}}}
# {15: {'hg75': {'first': '0'}, 'hg03': {'first': '0'}}}
uj5u.com熱心網友回復:
嘗試itertools.groupby并dict comprehension
from itertools import groupby
{k:{v1['last']: {'first': v1['first']} for v1 in v} for k,v in groupby(sorted(data, key=lambda x: x["pay"]), key=lambda x: x["pay"])}
#output
{0: {'hg01': {'first': '0'}, 'hg0': {'first': '0'}, 'hg76': {'first': '0'}},
1: {'hg0': {'first': '0'}, 'hg12': {'first': '0'}, 'hg1': {'first': '0'}},
9: {'hg1': {'first': '0'}, 'hg11': {'first': '0'}},
13: {'hg9': {'first': '0'}, 'hg': {'first': '0'}, 'hg81': {'first': '0'}},
15: {'hg75': {'first': '0'}, 'hg03': {'first': '0'}}}
uj5u.com熱心網友回復:
我會dict.setdefault在這里使用:
out = {}
for d in data:
out.setdefault(d['pay'], {})[d['last']] = {'first': d['first']}
輸出:
{0: {'hg01': {'first': '0'}, 'hg0': {'first': '0'}, 'hg76': {'first': '0'}},
15: {'hg75': {'first': '0'}, 'hg03': {'first': '0'}},
1: {'hg0': {'first': '0'}, 'hg12': {'first': '0'}, 'hg1': {'first': '0'}},
13: {'hg9': {'first': '0'}, 'hg': {'first': '0'}, 'hg81': {'first': '0'}},
9: {'hg1': {'first': '0'}, 'hg11': {'first': '0'}}}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/530414.html
上一篇:熊貓資料框到元組字典
下一篇:使用串列作為條件洗掉字典的專案
