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

时间:2019-11-19 17:34:11

标签: python dictionary join merge append

我已将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'}
}

数据2:

{
  '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'}
}

Merged_Date(预期结果):

{
  '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'])

2 个答案:

答案 0 :(得分: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'}
}

答案 1 :(得分: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()}