You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于嵌套列表值合并字典列表的实现方法咨询

基于嵌套列表值合并字典列表的实现方法咨询

我现在正纠结于如何基于两个输入列表创建一个新的列表,举个例子:

data_1 = [
    {
      "title": "System", "priority": "medium", "subtitle": "mason",
      "files": [
        {"name": "mason", "path": "/tmp/mason/mason.json"},
        {"name": "mason", "path": "/tmp/mason/build.json"}
    ]},
    {
      "title": "System", "priority": "medium", "subtitle": "kylie",
      "files": [
        {"name": "kylie", "path": "/tmp/kylie/build.tar"},
        {"name": "kylie", "path": "/tmp/kylie/kylie.json"}
    ]}
]

data_2 = [
    {
      "title": "System", "priority": "medium",
      "files": [
        {"name": "build", "path": "/tmp/kylie/build.tar"},
        {"name": "kylie", "path": "/tmp/kylie/kylie.json"},
        {"name": "mason", "path": "/tmp/mason/mason.json"},
        {"name": "build", "path": "/tmp/mason/build.json"}
    ]}
]

merged = [
    {
      "title": "System", "priority": "medium", "subtitle": "mason",
      "files": [
        {"name": "mason", "path": "/tmp/mason/mason.json"},
        {"name": "build", "path": "/tmp/mason/build.json"}
    ]},
    {
      "title": "System", "priority": "medium", "subtitle": "kylie",
      "files": [
        {"name": "build", "path": "/tmp/kylie/build.tar"},
        {"name": "kylie", "path": "/tmp/kylie/kylie.json"}
    ]}
]

简单来说,保留data_1里的数据,只把files.name替换成data_2中相同path对应的name就行;或者也可以把data_2的元素拆分,给每个拆分后的元素加上subtitle,同时删掉data_2.files中那些和data_1里路径不匹配的项。

我自己刚开始写了点代码,但感觉越写越乱:

for d1 in data_1:
  for d2 in data_2:
    d1_key = (d1.get("title"), d1.get("priority"))
    d2_key = (d1.get("title"), d1.get("priority"))
    if d1_key == d2_key:
      for df in d1.get("files"):
        if any(df.get("path") in entry.get("path") for entry in d2.get("files")):
          print("Help! There must be easier way!")

我觉得这个思路不够清晰,没法继续往下写了。

有没有更简洁的方法能生成目标的merged列表呀?

备注:内容来源于stack exchange,提问作者AbreQueVoy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 13:48:07