在密钥上使用Python在两个字典上执行连接

时间:2017-05-24 17:28:53

标签: python dictionary

以下是工作词典列表:

[{'emp_id':1,'job_id':a},
{'emp_id':1,'job_id':b},
{'emp_id':1,'job_id':c},
{'emp_id':2,'job_id':d},
{'emp_id':3,'job_id':e},
{'emp_id':3,'job_id':f}]

以下是员工词典列表

[{'emp_id':1,'city':Tokyo},
{'emp_id':2,'city':Berlin},
{'emp_id':3,'city':Paris},
{'emp_id':4,'city':New York}]

我的目的是输出每个城市的结果以及那些已经完成工作的城市的员工数量。

我使用涉及循环的繁琐方法完成了这项工作

有没有一种pythonic方式来实现这个目标?

1 个答案:

答案 0 :(得分:1)

我会使用python的 pandas 库...

a = [{'emp_id':1,'job_id':'a'},
{'emp_id':1,'job_id':'b'},
{'emp_id':1,'job_id':'c'},
{'emp_id':2,'job_id':'d'},
{'emp_id':3,'job_id':'e'},
{'emp_id':3,'job_id':'f'}]

b = [{'emp_id':1,'city':'Tokyo'},
{'emp_id':2,'city':'Berlin'},
{'emp_id':3,'city':'Paris'},
{'emp_id':4,'city':'New York'}]

df1 = pd.DataFrame(a)
df2 = pd.DataFrame(b)

result = pd.merge(df1,df2, on='emp_id', how='left')
result.set_index('emp_id', inplace=True)

result = result.to_dict()
print(result)

返回以下输出:

{'job_id': {1: 'c', 2: 'd', 3: 'f'}, 'city': {1: 'Tokyo', 2: 'Berlin', 3: 'Paris'}}