在Dictionary中附加类似的键

时间:2016-12-21 22:05:57

标签: python dictionary append

我的字典看起来像这样:

x={'a':"a",'b':"b"}

y={'a':"c",'b':"d"}

我想要这个:

z={'a':"ac",'b':"bd"}

如何使用Python执行此操作?

5 个答案:

答案 0 :(得分:5)

z = { k : x.get(k, '') + y.get(k, '') for k in x.keys() | y.keys() }

这是一个字典表达式({...}),将k|的集合组合(x.keys())中的每个元素y.keys()映射到各个值的串联(或者当前值和空字符串的串联,指定为get的默认参数)。

答案 1 :(得分:0)

制作x的副本,然后枚举y的所有键,并将其值附加到副本中的值。使用z.get(key, '')来捕获缺失值的情况。

z = x.copy()
for key in y.keys():
   z[key] = z.get(key, '') + y[key]

您可以将其概括为具有两个以上的词组

z = {}
more_than_two = [x, y]
for each in more_than_two:
    for key in each.keys():
        z[key] = z.get(key, '') + each[key]

答案 2 :(得分:0)

该程序采用任意数量的字典并对其进行求和。即使你的某些词汇中有唯一的键,它也会有用:

def do_sum(*args):
    result = dict()
    for d in args:
        for k, v in d.items():
            result.setdefault(k, "")
            result[k] = result.get(k, "") + v
    return result

x={'a':"a",'b':"b"}
y={'a':"c",'b':"d"}
z = do_sum(x, y)
assert z=={'a':"ac",'b':"bd"}

答案 3 :(得分:0)

尝试以下方法:

import copy

z = copy.copy(x)  # We use copy to avoid changing x in the following for loop

for k in z.keys():
    z[k] += y[k]

<强>输出:

>>> z
{'a': 'ac', 'b': 'bd'}

答案 4 :(得分:0)

使用DataColNumber = wb.wks.Range("1:1").Find("Machine", LookIn:=xlValues, lookat:=xlWhole).Column

collections.defaultdict