我的字典看起来像这样:
x={'a':"a",'b':"b"}
和
y={'a':"c",'b':"d"}
我想要这个:
z={'a':"ac",'b':"bd"}
如何使用Python执行此操作?
答案 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