[英]how to create a dictionary with list of dictionaries as values from a list of dictionaries
[英]Create a new list of dictionaries using values from an old list of dictionaries
如何僅使用舊字典列表中的值創建新的字典列表? 本質上,我需要新列表“new_list_of_dicts”如下所示。
old_list_of_dicts = [{'vid': 'transpower_036', 'name': '221_02_PB_520_REF_174050'}, {'vid': 'transpower_065', 'name': '222_05_KAL_T2E_YT_344991'}, {'vid': 'transpower_156', 'name': '226_02_INTL_PRSTR_ET_499802'}, {'vid': 'transpower_162', 'name': '226_FL01_KAL_DCE_FL_050232'}, {'vid': 'transpower_157', 'name': '226_FL02_KAL_DCE_FL_050234'}, {'name': '226_FL03_KAL_DCE_FL_050233', 'vid': 'transpower_163'}, {'vid': 'transpower_159', 'name': '226_XX_INTL_PRSTR_ET_499801'}, {'vid': 'transpower_161', 'name': '226_XX_KAL_T2E_YT_346321'}]
new_list_of_dicts = [{'transpower_036': '221_02_PB_520_REF_174050'}, {'transpower_065': '222_05_KAL_T2E_YT_344991'}, {'transpower_156': '226_02_INTL_PRSTR_ET_499802'}, {'transpower_162': '226_FL01_KAL_DCE_FL_050232'}, {'transpower_157': '226_FL02_KAL_DCE_FL_050234'}, {'226_FL03_KAL_DCE_FL_050233': 'transpower_163'}, {'transpower_159': '226_XX_INTL_PRSTR_ET_499801'}, {'transpower_161': '226_XX_KAL_T2E_YT_346321'}]
如果old_list_of_dicts
中的每個字典都有兩個值,你可以這樣做:
new_list_of_dicts = [dict([d.values()]) for d in old_list_of_dicts]
print(new_list_of_dicts)
印刷:
[
{"transpower_036": "221_02_PB_520_REF_174050"},
{"transpower_065": "222_05_KAL_T2E_YT_344991"},
{"transpower_156": "226_02_INTL_PRSTR_ET_499802"},
{"transpower_162": "226_FL01_KAL_DCE_FL_050232"},
{"transpower_157": "226_FL02_KAL_DCE_FL_050234"},
{"226_FL03_KAL_DCE_FL_050233": "transpower_163"},
{"transpower_159": "226_XX_INTL_PRSTR_ET_499801"},
{"transpower_161": "226_XX_KAL_T2E_YT_346321"},
]
編輯:先前創建字典而不是列表的答案:
new_list_of_dicts = dict(d.values() for d in old_list_of_dicts)
print(new_list_of_dicts)
印刷:
{
"transpower_036": "221_02_PB_520_REF_174050",
"transpower_065": "222_05_KAL_T2E_YT_344991",
"transpower_156": "226_02_INTL_PRSTR_ET_499802",
"transpower_162": "226_FL01_KAL_DCE_FL_050232",
"transpower_157": "226_FL02_KAL_DCE_FL_050234",
"226_FL03_KAL_DCE_FL_050233": "transpower_163",
"transpower_159": "226_XX_INTL_PRSTR_ET_499801",
"transpower_161": "226_XX_KAL_T2E_YT_346321",
}
您可以使用理解來創建 new_list_of_dicts:
new_list_of_dicts = [{old['vid']: old['name']} for old in old_list_of_dicts]
嘗試這個:
old_list_of_dicts = [{'vid': 'transpower_036', 'name': '221_02_PB_520_REF_174050'}, {'vid': 'transpower_065', 'name': '222_05_KAL_T2E_YT_344991'}, {'vid': 'transpower_156', 'name': '226_02_INTL_PRSTR_ET_499802'}, {'vid': 'transpower_162', 'name': '226_FL01_KAL_DCE_FL_050232'}, {'vid': 'transpower_157', 'name': '226_FL02_KAL_DCE_FL_050234'}, {'name': '226_FL03_KAL_DCE_FL_050233', 'vid': 'transpower_163'}, {'vid': 'transpower_159', 'name': '226_XX_INTL_PRSTR_ET_499801'}, {'vid': 'transpower_161', 'name': '226_XX_KAL_T2E_YT_346321'}]
new_list_of_dicts = [{d["vid"]: d["name"]} for d in old_list_of_dicts]
from operator import itemgetter
new_list_of_dicts = [dict([itemgetter('vid', 'name')(d)])
for d in old_list_of_dicts]
output:
[{'transpower_036': '221_02_PB_520_REF_174050'},
{'transpower_065': '222_05_KAL_T2E_YT_344991'},
{'transpower_156': '226_02_INTL_PRSTR_ET_499802'},
{'transpower_162': '226_FL01_KAL_DCE_FL_050232'},
{'transpower_157': '226_FL02_KAL_DCE_FL_050234'},
{'transpower_163': '226_FL03_KAL_DCE_FL_050233'},
{'transpower_159': '226_XX_INTL_PRSTR_ET_499801'},
{'transpower_161': '226_XX_KAL_T2E_YT_346321'}]
如果您想要具有多個鍵的唯一字典,則可以選擇:
from operator import itemgetter
new_list_of_dicts = dict(itemgetter('vid', 'name')(d)
for d in old_list_of_dicts)
Output:
{'transpower_036': '221_02_PB_520_REF_174050',
'transpower_065': '222_05_KAL_T2E_YT_344991',
'transpower_156': '226_02_INTL_PRSTR_ET_499802',
'transpower_162': '226_FL01_KAL_DCE_FL_050232',
'transpower_157': '226_FL02_KAL_DCE_FL_050234',
'transpower_163': '226_FL03_KAL_DCE_FL_050233',
'transpower_159': '226_XX_INTL_PRSTR_ET_499801',
'transpower_161': '226_XX_KAL_T2E_YT_346321'}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.