让我们假设,我在python中有一个键值对,如下所示。
a = {'44': [0, 0, 1, 0, 1], '43': [0, 0, 1, 0, 0]}
现在我想将这些值与:
组合在一起b = {'44': ['test1'], '43': ['test2']}
如何在python中执行以下输出?
c = {'44': [0, 0, 1, 0, 1, 'test1], '43': [0, 0, 1, 0, 0,'test2']}
答案 0 :(得分:1)
您可以使用这样的字典理解(从Python 2.7 +开始):
c = {k: a[k] + b[k] for k in a}
这假设a
和b
中存在相同的密钥。
如果情况并非如此,那么必要时可以解决这个问题。
答案 1 :(得分:1)
其他答案基于所有涉及的词典都具有相同键的假设。如果您不确定是这种情况,我建议您使用collections.defaultdict
:
from collections import defaultdict
result = defaultdict(list)
for d in (a,b):
for key, value in d.items():
result[key].append(value)
此外,此解决方案适用于任意数量的词典。只需将要合并的所有词典添加到元组(a,b)
。
答案 2 :(得分:0)
a = {'44': [0, 0, 1, 0, 1], '43': [0, 0, 1, 0, 0]}
b = {'44': ['test1'], '43': ['test2']}
c = {}
for v in a:
c[v] = a[v]+b[v]
输出:
{'44': [0, 0, 1, 0, 1, 'test1'], '43': [0, 0, 1, 0, 0, 'test2']}
答案 3 :(得分:0)
您可以将zip()
与字典理解结合使用,以实现如下所示的单行代码:
c = {k: v for k, v in zip(a.keys(), (v1 + v2 for v1, v2 in zip(a.values(), b.values())))}
<强>输出:强>
>>> c
{'44': [0, 0, 1, 0, 1, 'test1'], '43': [0, 0, 1, 0, 0, 'test2']}
答案 4 :(得分:0)
首先想到的是:
var sum = $('.list .cart-items', this)
.find('.bay-qty')
.map(function () { return this.data("id"); })
.get() // get the array
.reduce(function (sum, value) { return sum + value; }, 0)
即使一个字典中缺少某些键,这也应该有效。我认为这只适用于较新版本的python 3。
答案 5 :(得分:0)
我假设a
和b
包含相同的键。然后你可以简单地使用dict理解(Create a dictionary with list comprehension in Python):
c = {x: a[x] + b[x] for x in a}
如果你不知道b
是否有相同的密钥,你也可以测试一下:
c = {x: a[x] + b[x] for x in a if x in b}
答案 6 :(得分:0)
你可以试试这个:
a = {'44': [0, 0, 1, 0, 1], '43': [0, 0, 1, 0, 0]}
b = {'44': ['test1'], '43': ['test2']}
final_data = {c:a[c]+b[c] for c, d in a.items()}
输出:
{'44': [0, 0, 1, 0, 1, 'test1'], '43': [0, 0, 1, 0, 0, 'test2']}
如果你需要生成&#34; test1&#34;,&#34; test2&#34;值等,你可以试试这个:
l1 = {}
for c, d in a.items():
if d not in l1.values():
l1["test{}".format(len(l1)+1)] = d
print(l1)
输出:
{'test1': [0, 0, 1, 0, 1], 'test2': [0, 0, 1, 0, 0]}