我試圖將串列轉換為元組到自定義串列到字典。我試圖劃分包所有者、提交者和消費者。請檢查以下預期輸出。
lst = [('name1', 'email1','id1','new1',11,'1','po'),
('name2', 'email2','id2','new2',12,'2','sub'),
('name3', 'email3','id3','new3',13,'3','sub'),
('name4', 'email4','id4','new4',14,'4','po'),
('name5', 'email5','id5','new5',15,'5','cons')]
我嘗試使用以下代碼但無法獲得預期的輸出
def lst_of_dict()
res = [{"name":each[0], "email":each[1], "psid":each[2} for each in lst]
return jsonify({"add_sub":res})
我試圖低于輸出
{
"add_sub":{
"sub":[{"id":"id2","name":"name2","email":"email2"},{"id":"id3","name":"name3","email":"email3"}],
"po":[{"id":"id1","name":"name1","email":"email1"},{"id":"id4","name":"name4","email":"email4"}],
"consumer":[{"id":"id5","name":"name5","email":"email5"}]},}
我是 python 新手,請建議我更改邏輯
uj5u.com熱心網友回復:
collections.defaultdict救援:
from collections import defaultdict
lst = [('name1', 'email1', 'psid1', 'new1', 11, '1', 'pack owner'),
('name2', 'email2', 'psid2', 'new2', 12, '2', 'submitter'),
('name3', 'email3', 'psid3', 'new3', 13, '3', 'submitter'),
('name4', 'email4', 'psid4', 'new4', 14, '4', 'pack owner'),
('name5', 'email5', 'psid5', 'new5', 15, '5', 'consumer')]
by_role = defaultdict(list)
for name, email, psid, new, id1, id2, role_name in lst:
by_role[role_name].append({"name": name, "email": email, "psid": psid})
print({"add_sub": dict(by_role)})
列印出來
{'add_sub':
{'pack owner': [{'name': 'name1', 'email': 'email1', 'psid': 'psid1'}, {'name': 'name4', 'email': 'email4', 'psid': 'psid4'}],
'submitter': [{'name': 'name2', 'email': 'email2', 'psid': 'psid2'}, {'name': 'name3', 'email': 'email3', 'psid': 'psid3'}],
'consumer': [{'name': 'name5', 'email': 'email5', 'psid': 'psid5'}]
}
}
uj5u.com熱心網友回復:
試試這個,
res = {"add_sub":{}}
for name, mail, psid, *_, role_name in lst:
res['add_sub'].setdefault(role_name, []).append({"name":name, "email":mail, "psid":psid})
輸出:
{'add_sub':
{'consumer': [{'email': 'email5', 'name': 'name5', 'psid': 'psid5'}],
'pack owner': [{'email': 'email1', 'name': 'name1', 'psid': 'psid1'},
{'email': 'email4', 'name': 'name4', 'psid': 'psid4'}],
'submitter': [{'email': 'email2', 'name': 'name2', 'psid': 'psid2'},
{'email': 'email3', 'name': 'name3', 'psid': 'psid3'}]}}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/473192.html
上一篇:如何構建詞典詞典?
下一篇:從嵌套for回圈到字典理解?
