合并2个词典,{X:Y},{Y:Z}关系

时间:2017-02-13 16:51:03

标签: python python-2.7 dictionary

我希望将2个字典组合用于数据标准化...第一个字典包含远程数据标题,以及标题应转换为...

Dict 1 = {
"timestamp": "TimeStamp", 
"name": "SiteName",
"energy": "PowerExport", 
}

Dict 2 = {
"TimeStamp": "13-02-2017 12:34:05", 
"PowerExport": 32, 
"SiteName": "Site 104",
}

目的是合并这两个词典,使其看起来像这样:

Dict 1 = {
"timestamp": "13-02-2017 12:34:05", 
"name": "Site 104",
"energy": 32, 
}

因此,目的是将{X:Y},{Y:Z}转换为{X:Z}。

3 个答案:

答案 0 :(得分:1)

这可以通过单个词典理解来完成:

new_dict = {k: dict_2.get(v) for k, v in dict_1.iteritems()}

如果在dict_2中找不到密钥,则使用get来确保它不会失败;如果发生这种情况,该值将为None。 Dicts没有订单,所以不用担心。

答案 1 :(得分:0)

另一种选择,如果你想要一个不使用任何进口的单线,是: {key:Dict2[value] for key,value in Dict1.items() if Dict2.has_key(value)}

答案 2 :(得分:0)

或者没有词典理解:

dict1 = {
    "timestamp": "TimeStamp", 
    "name": "SiteName",
    "energy": "PowerExport"
}
dict2 = {
    "TimeStamp": "13-02-2017 12:34:05", 
    "PowerExport": 32, 
    "SiteName": "Site 104"
}

d = {}
for k in dict1:
    if dict1[k] in dict2:
        d[k] = dict2[dict1[k]]