3

我在这里需要一点帮助。我是一个新的 python 编码器。我需要很多帮助。所以,我想在两个字典中添加不同的变量。一个例子是:

x = {'a':1, 'b':2}

y = {'b':1, 'c':2}

我想替换这些值,使其看起来像:

x = {'a':1, 'b':2, 'c':0}

y = {'a':0, 'b':1, 'c':2}
4

3 回答 3

6
>>> x = {'a':1, 'b':2}
>>> y = {'b':1, 'c':2}
>>> for k in y:
...  x.setdefault(k, 0)
... 
0
2
>>> for k in x:
...  y.setdefault(k, 0)
... 
0
2
1
>>> x
{'a': 1, 'c': 0, 'b': 2}
>>> y
{'a': 0, 'c': 2, 'b': 1}
于 2013-05-17T06:56:44.213 回答
4
>>> x = {'a':1, 'b':2}
>>> y = {'b':1, 'c':2}
>>> keys = x.viewkeys() | y.viewkeys()  #returns union of keys in x and y
>>> x = {k : x.get(k,0) for k in keys}
>>> y = {k : y.get(k,0) for k in keys}
>>> x
{'a': 1, 'c': 0, 'b': 2}
>>> y
{'a': 0, 'c': 2, 'b': 1}

就地更改字典:

>>> x = {'a':1, 'b':2}
>>> y = {'b':1, 'c':2}
>>> diff_x = y.viewkeys() - x.viewkeys()
>>> diff_y = x.viewkeys() - y.viewkeys()
#if you're using a mutable object as value instead of 0,
#then you've to use a dict comprehension instead of dict.fromkeys.
>>> x.update(dict.fromkeys(diff_x,0))
>>> y.update(dict.fromkeys(diff_y,0))
>>> x
{'a': 1, 'c': 0, 'b': 2}
>>> y
{'a': 0, 'c': 2, 'b': 1}
于 2013-05-17T06:51:19.917 回答
1

如果您需要一个新字典,这个解决方案会很好:

>>> x = {'a':1, 'b':2}
>>> y = {'b':1, 'c':2}
>>> dict(dict.fromkeys(y, 0), **x)
{'a': 1, 'c': 0, 'b': 2}
>>> dict(dict.fromkeys(x, 0), **y)
{'a': 0, 'c': 2, 'b': 1}
于 2013-05-17T06:57:00.547 回答