Python 如题所示,如何获取举例的数据结构?

作者站长头像
站长
· 阅读数 10
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个回答
avatar
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)
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容