python - 从主列表和子列表创建一个新的字典列表
问题描述
我有两个列表(主列表和子列表),其中包含不同数量的字典,如果它们的位置匹配,它们的值将相同。
mainLst = [{"name":"M_AAA_X", "position":"1", "value":"8"},
{"name":"M_AAA_X", "position":"2", "value":"10"},
{"name":"M_AAA_X", "position":"4", "value":"14"},
{"name":"M_AAA_X", "position":"5", "value":"16"},
{"name":"M_AAA_X", "position":"7", "value":"20"}]
subLst = [{"name":"S_AAA_X", "position":"1", "value":"8"},
{"name":"S_AAA_X", "position":"2", "value":"10"},
{"name":"S_AAA_X", "position":"3", "value":"12"},
{"name":"S_AAA_X", "position":"4", "value":"14"},
{"name":"S_AAA_X", "position":"5", "value":"16"},
{"name":"S_AAA_X", "position":"6", "value":"18"}]
我想通过以下方式创建一个新列表:
- 从 mainLst 中获取元素
- 如果 mainLst 缺少某个位置(例如位置:3、6),则从 subList 中获取元素
- 按“位置”升序排序
输出应如下所示:
newLst = [{"name":"M_AAA_X", "position":"1", "value":"8"},
{"name":"M_AAA_X", "position":"2", "value":"10"},
{"name":"S_AAA_X", "position":"3", "value":"12"},
{"name":"M_AAA_X", "position":"4", "value":"14"},
{"name":"M_AAA_X", "position":"5", "value":"16"},
{"name":"S_AAA_X", "position":"6", "value":"18"},
{"name":"M_AAA_X", "position":"7", "value":"20"}]
谁能帮我完成这个?提前致谢!
解决方案
试试这个。
mainLst.extend([dictSub for dictSub in subLst if dictSub['position'] not in [pos['position'] for pos in mainLst]])
print(sorted(mainLst, key = lambda i: i['position']))
基本上我们收集sublist
不在的位置mainlist
。然后我们根据它对字典列表进行排序。
输出
[{'name': 'M_AAA_X', 'position': '1', 'value': '8'},
{'name': 'M_AAA_X', 'position': '2', 'value': '10'},
{'name': 'S_AAA_X', 'position': '3', 'value': '12'},
{'name': 'M_AAA_X', 'position': '4', 'value': '14'},
{'name': 'M_AAA_X', 'position': '5', 'value': '16'},
{'name': 'S_AAA_X', 'position': '6', 'value': '18'},
{'name': 'M_AAA_X', 'position': '7', 'value': '20'}]
推荐阅读
- wso2 - 通过不同的服务器对用户进行身份验证,在 WSO2 中生成 JWT
- reporting-services - 使用 IIf 和 First 聚合在报表生成器上设置表达式不起作用
- c++ - 使用模板方法为类定义非模板方法
- c - 与 '#define' 相比,'inline __attribute__ ((forced_inline))' 的缺点是什么?
- javascript - 如何将此选定的文本放入DIV而不是textarea,并将所有选定的部分一一收集到div中
- python-3.x - 基于匹配字符串从更大的列表列表中提取子列表项
- linux - 是否可以在本地网络机器上拥有用户友好的 IP 地址?
- flutter - 我总是在颤抖中导航到空白页面
- regex - 正则表达式如何匹配[]中的任何空格
- css - 使用 Parcel bundler 构建时如何防止组合 CSS 规则?