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.2k
1 个回答

奇怪的结构。

能不能改成这样呢:

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)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题