Python 如题所示,如何获取举例的数据结构?
data1 = [
{'编号A': '123456789', '编号B': '1234', '编号C': '789789789', '编号D': 'AA'},
{'编号A': '123456789', '编号B': '2345', '编号C': '789789789', '编号D': 'BB'},
{'编号A': '123456789', '编号B': '3456', '编号C': '789789789', '编号D': 'CC'},
{'编号A': '012345678', '编号B': '4567', '编号C': '789789789', '编号D': 'DD'},
{'编号A': '012345678', '编号B': '5678', '编号C': '789789789', '编号D': 'EE'},
{'编号A': '012345678', '编号B': '6789', '编号C': '678678678', '编号D': 'FF'},
]
data2 = {'789789789': ['AA', 'BB', 'DD']}
# 想实现的数据结构
result = [
{'123456789': ['AA', 'BB']},
{'012345678': ['DD']},
]
如上代码所示,data1,data2是举例的数据,result 是先要获取的数据
以data1中的编号C值去data2中查找,有几个编号A就返回几个结果,前提是编号C的值是相同的
有什么方法能实现吗 谢谢大佬了
回复
1个回答

test
2024-07-14
奇怪的结构。
能不能改成这样呢:
data2 = {
'789789789': ['AA', 'BB', 'DD'] # 改成 {'AA', 'BB', 'DD'},速度可以更快些
}
# 想实现的数据结构
result = {
'123456789': ['AA', 'BB'],
'012345678': ['DD'],
}
如果可以,代码能简洁些:
result = {}
for i in data1:
A, C, D = i['编号A'], i['编号C'], i['编号D']
if C in data2 and D in data2[C]:
result.setdefault(A, []).append(D)
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容