基于Python 3中的列的合并/合并2个字典

问题描述 投票:-1回答:2

我已经将2个csv文件读入2个单独的词典中。现在,我需要根据邮政编码列合并或加入它们,请告知。这是示例数据:

数据1:

{
  '10029': {'Zipcode': '10029', 'City': 'New York', 'State': 'NY'},
  '11221': {'Zipcode': '11221', 'City': 'Brooklyn', 'State': 'NY'},
  '10162': {'Zipcode': '10162', 'City': 'New York', 'State': 'NY'}
}

Data2:

{
  '10029': {'Zipcode': '10029', 'Latitude': '40.82374', 'Longitude': '-73.9373'},
  '11211': {'Zipcode': '11211', 'Latitude': '40.72354', 'Longitude': '-73.98295'},
  '10162': {'Zipcode': '10162', 'Latitude': '41.75554', 'Longitude': '-72.94225'}
}

合并日期(预期结果):

{
  '10029': {'Zipcode': '10029', 'City': 'New York', 'State': 'NY', 'Latitude': '40.82374', 'Longitude': '-73.9373'},
  '10162': {'Zipcode': '10162', 'City': 'New York', 'State': 'NY''Latitude': '41.75554', 'Longitude': '-72.94225'}
}

因为只有2个匹配项。

我有代码,似乎无法使用:

Data1[Zipcode] = Data2
    if Data1[Zipcode] == Data2['Zipcode']:
        Data1= Data2.append(['Zipcode'],['Longitude'],['Latitude'])
python dictionary join merge append
2个回答
1
投票

您无法append进入字典。

我要做的是:

merged = dict()
for key in Data1:
  if key in Data2:
    merged[key] = {**Data1[key], **Data2[key]}

print(merged)

结果:

{
  '10029': {'Zipcode': '10029', 'City': 'New York', 'State': 'NY', 'Latitude': '40.82374', 'Longitude': '-73.9373'}, 
  '10162': {'Zipcode': '10162', 'City': 'New York', 'State': 'NY', 'Latitude': '41.75554', 'Longitude': '-72.94225'}
}

0
投票

您可以遍历第一个数据键,检查此键是否在第二个字典中,如果是,则合并两个字典:

merged_data = dict()
for key in Data1.keys():
    if key in Data2.keys():
        merged_data.update({key: {**Data1[key], **Data2[key]}})

如果您更喜欢使用dict理解:

merged_data = {k: {**Data1[k], **Data2[k]} for k in Data1.keys() if k in Data2.keys()}
© www.soinside.com 2019 - 2024. All rights reserved.