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
,这样的keys
的z
是一个计数,等于两者的长度dicts
.
>>> z = {1: 'a', 2: 'b', 3: 'c', 4: 'd'}
Run Code Online (Sandbox Code Playgroud)
正如你所看到的keys
的z
是一个计数和values
是keys
的x
和y
.
我该如何实现这一目标?我尝试过各种各样的解决方案zip
,但似乎都没有.可能是因为我必须z
连续更新字典.
有什么建议?
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)
归档时间: |
|
查看次数: |
146 次 |
最近记录: |