我有两个字典,我想将这两个字符串组合在格式键的列表中 - >值,键 - >值...删除任何无或['']
目前我有以下我可以结合dicts但不创建组合列表...我有expecte输出..任何输入appreeciated
dict1={'313115': ['313113'], '311957': None}
dict2={'253036': [''], '305403': [], '12345': ['']}
dict = dict(dict1.items() + dict2.items())
print dict
{'313115': ['313113'], '311957': None, '253036': [''], '12345': [''], '305403': []}
EXPECTED OUTPUT:
['313115','313113','311957','253036','305403','12345']
Run Code Online (Sandbox Code Playgroud)
这应该这样做:
[i for k, v in (dict1.items() + dict2.items()) for i in [k] + (v or []) if i]
Run Code Online (Sandbox Code Playgroud)
走两个dicts的组合项,然后走键和值列表,返回存在的第二个步行中的每个项目.
返回['313115', '313113', '311957', '253036', '12345', '305403']你的示例dicts - 顺序是不同的,因为python的dict迭代是无序的.
编辑:
dict.items()在大型dicts上可能很昂贵 - 它需要O(n)大小,而不是迭代.如果你使用itertools,这会更有效(并保持你在一个地方使用的dicts):
import itertools
[i
for k, v in itertools.chain.from_iterable(d.iteritems() for d in (dict1, dict2))
for i in [k] + (v or [])
if i]
Run Code Online (Sandbox Code Playgroud)
感谢Martijn Pieters的from_iterable小贴士.
| 归档时间: |
|
| 查看次数: |
163 次 |
| 最近记录: |