python - 如何合并列表中具有相等值的字典和不相等的连接值并将其他字段保留在字典中?

标签 python dictionary merge

有字典列表, 当两个或多个字典中的id相等时,名称也相等,但代码不同。

[
    {
        "id" : 2.0,
        "name":"x",
        "code" : "12345"
    },
    {
        "id" : 2.0,
        "name":"x",
        "code" : "23456"
    },
    {
        "id" : 4.0,
        "name":"y",
        "code" : "6767"
    },
    {
        "id" : 5.0,
        "name":"z",
        "code" : "567"
    },
    {
        "id" : 4.0,
        "name":"y",
        "code" : "55657"
    }
]

我想合并具有公共(public) id 的字典,然后我想要这个列表,如您所见:

[
    {
        "id" : 2.0,
        "name":"x",
        "code" : "12345,23456"
    },
    {
        "id" : 4.0,
        "name":"y",
        "code" : "6767,55657"
    },
    {
        "id" : 5.0,
        "name":"z",
        "code" : "567"
    }
]

最佳答案

您可以使用库 pandas 执行此操作。

import pandas as pd
# Here, L1 is your former list
L2 = pd.DataFrame(L1).groupby(["id", "name"], as_index=False).agg({"code": lambda x: ','.join(x.tolist())}).to_json(orient="records")
print(L2)

输出

[
  {
    "id": 2.0,
    "name": "x",
    "code": "12345,23456"
  },
  {
    "id": 4.0,
    "name": "y",
    "code": "6767,55657"
  },
  {
    "id": 5.0,
    "name": "z",
    "code": "567"
  }
]

编辑:将列表固定为字符串

关于python - 如何合并列表中具有相等值的字典和不相等的连接值并将其他字段保留在字典中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60115364/

相关文章:

python pandas/numpy 根据映射方案替换所有值的快速方法

python行编辑telnet服务器

c++ - Python初始化段错误

python - 将比较结果作为pandas.DataFrame的索引

python - 在Python中Merge()两个Dataframe,查看ID的重复情况

git - 在 Windows 上为 Git 配置差异工具

python - Python 中数百万字符串列表的内存使用情况

python - 将文件中的字符串分组到字典中

python - 如何使用 Pandas 将文件中的值添加到字典中

python-3.x - 使用 apply/lambda 将分组数据框转换为字典