将两个词典合并为一个结果词典

时间:2017-03-03 10:45:24

标签: python json dictionary merge

我正在尝试合并我拥有的两个列表。

gpbdict = dict(zip(namesb, GPB))
>>> {'1': True, '3': True, '2': True, '5': True, '4': True, '7': True, '6': True, '8': True}
gpadict = dict(zip(namesa, GPA))
>>> {'11': True, '10': True, '13': True, '12': True, '15': True, '14': True, '16': True, '9': True}

然而,它似乎并不像以下那么简单:

 json.loads(gpadict + gpbdict)

gpa_gpb = [gpadict, gpbdict]
print json.dumps(gpa_gpb, indent=2, sort_keys=True))

只有后者会产生两个单独列表的结果:

>>>[
>>>  {
>>>    "10": true,
>>>    "11": true,
>>>    "12": true,
>>>    "13": true,
>>>    "14": true,
>>>    "15": true,
>>>    "16": true,
>>>    "9": true
>>>  },
>>>  {
>>>    "1": true,
>>>    "2": true,
>>>    "3": true,
>>>    "4": true,
>>>    "5": true,
>>>    "6": true,
>>>    "7": true,
>>>    "8": true
>>>  }
>>>]

我缺少一步吗?

1 个答案:

答案 0 :(得分:3)

你正在做一些奇怪的事情。

首先,你要合并Python对象,不是吗?为什么以及如何? gpbdictgpbadict都是字典(不是list),因此您的问题不是非常具体。并且json.loads预计会收到一个字符串(一个JSON)而不是一个Python对象。所以,也许你只想要:

gpbadict = dict(zip(namesb + namesa, GPB + GPA))

请注意,运算符+适用于列表,但不适用于词典。

另一方面,如果要合并字典,可以使用update

gpadict.update(gpbdict)

这将有效地合并字典:gpadict将成为gpadict(起始者)和gpbdict的组合。如果有重复的密钥,它们将被覆盖。

在整个问题中,我找不到任何真正的JSON参考。我错过了什么?