gpt4 book ai didi

python - 合并具有不一致键的多个字典

转载 作者:行者123 更新时间:2023-12-01 01:10:04 25 4
gpt4 key购买 nike

我是一名 Python 初学者,正在努力解决以下问题:

我正在尝试将多个列表与从多个 json 解码的嵌套字典合并。列表之间的共同点是每个嵌套字典对应于名称的“uid”键,但问题是某些字典的键名称不同。例如,字典可能以“number”作为键,而不是“uid”。我想将它们的各个部分合并到一个 super 嵌套字典列表中。为了说明这一点,我所拥有的是:

masterlist = [ ]

listA = [{"uid": "12345", "name": "John Smith"}, {etc...}]

listB = [{"number": "12345", "person": "John Smith", "val1": "25"}, {etc...}]

listC = [{"number": "12345", "person": "John Smith", "val2": "65"}, {etc...}]

我想要的最终结果是:

masterlist = [{"uid": "12345", "name": "John Smith", "val1": "25", "val2: "65"}, {etc...}]

是否可以通过迭代并比较相同的“uid”值来高效/Python地完成此操作?我看过很多关于通过匹配键进行合并的方法,但这里的问题显然是键不一致。排序并不重要。我所需要的只是主列表包含每个字典条目相应的 uid、名称和值。希望这是有道理的,谢谢!

最佳答案

可能有使用基本Python的解决方案,但我能想到的最简单的方法是使用pandas库将每个列表转换为DataFrame,然后将它们连接/合并在一起。

import pandas as pd

dfA = pd.DataFrame(listA)
dfB = pd.DataFrame(listB)

merged_df = dfA.merge(dfB, left_on='uid', right_on='number')

这将返回一个包含比您需要的列更多的数据帧(即,“uid”和“number”都会有列),但您可以这样指定您想要的列以及您想要的顺序:

merged_df = merged_df[['uid', 'name', 'val1']]

要将多个 DataFrame 合并到一个主框架中,请参阅此处:pandas three-way joining multiple dataframes on columns

关于python - 合并具有不一致键的多个字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54950519/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com