使用计数器合并字典

use*_*312 3 python merge dictionary

我有以下词典(示例):

>>> x = {'a': 'foo', 'b': 'foobar'}
>>> y = {'c': 'barfoo', 'd': 'bar'}
Run Code Online (Sandbox Code Playgroud)

我想利用keys每一个,使他们的另一种价值dict,比方说z,这样的keysz是一个计数,等于两者的长度dicts.

>>> z = {1: 'a', 2: 'b', 3: 'c', 4: 'd'}
Run Code Online (Sandbox Code Playgroud)

正如你所看到的keysz是一个计数和valueskeysxy.

我该如何实现这一目标?我尝试过各种各样的解决方案zip,但似乎都没有.可能是因为我必须z连续更新字典.

有什么建议?

Thi*_*ter 5

In [1]: import itertools
In [2]: x = {'a': 'foo', 'b': 'foobar'}
In [3]: y = {'c': 'barfoo', 'd': 'bar'}

In [4]: z = [key for key in itertools.chain(x, y)]

In [5]: z
Out[5]: ['a', 'b', 'c', 'd']

In [6]: dict(enumerate(z))
Out[6]: {0: 'a', 1: 'b', 2: 'c', 3: 'd'}

In [7]: dict(enumerate(z, 1))
Out[7]: {1: 'a', 2: 'b', 3: 'c', 4: 'd'}
Run Code Online (Sandbox Code Playgroud)

如果您希望重复键只出现一次,请替换[4]为:

z = set(key for key in itertools.chain(x, y))
Run Code Online (Sandbox Code Playgroud)

请注意,您也可以同时执行所有操作(对于此示例,我已添加'a': 'meow'y):

In [15]: dict(enumerate(set(key for key in itertools.chain(x, y)), 1))
Out[15]: {1: 'a', 2: 'c', 3: 'b', 4: 'd'}

In [16]: dict(enumerate((key for key in itertools.chain(x, y)), 1))
Out[16]: {1: 'a', 2: 'b', 3: 'a', 4: 'c', 5: 'd'}
Run Code Online (Sandbox Code Playgroud)