如何利用旧字典列表的值创建指定格式的新字典列表?
解决方案
你可以利用Python字典的值序列结合列表推导式快速实现需求,核心思路是提取每个原字典的两个值,将第一个值作为新字典的键,第二个值作为对应的值。
代码实现
首先定义原始数据:
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'} ]
生成目标列表的两种简洁写法:
写法1:列表推导式+值序列转换
new_list_of_dicts = [ {list(d.values())[0]: list(d.values())[1]} for d in old_list_of_dicts ]
写法2:利用dict()构造函数简化
new_list_of_dicts = [ dict([d.values()]) for d in old_list_of_dicts ]
说明
- 上述代码依赖Python 3.7及以上版本的特性:字典会保留键的插入顺序,因此
d.values()返回的序列顺序和原字典中键的顺序一致,刚好匹配你需要的键值对应关系。 - 运行后得到的
new_list_of_dicts完全符合你给出的目标格式。
内容的提问来源于stack exchange,提问作者IDK
相关产品推荐
相关产品推荐

