我有这个
d = \
[('a', {'b': 'c1', 'd': 'f1'}),
('a', {'bb': 'c2', 'dd': 'f2'}),
('a', {'bbb': 'c3', 'ddd': 'f3'})]
我想要像这样的输出
['c1', 'f1', 'f2', 'c2', 'c3', 'f3']
我试过这个
In [51]: [a.values() for k,a in d]
Out[51]: [['c1', 'f1'], ['f2', 'c2'], ['c3', 'f3']]
我想做最简单,最短的方式
答案 0 :(得分:4)
>>> d = \
[('a', {'b': 'c1', 'd': 'f1'}),
('a', {'bb': 'c2', 'dd': 'f2'}),
('a', {'bbb': 'c3', 'ddd': 'f3'})]
>>> [y for x in d for y in x[1].values()]
['c1', 'f1', 'f2', 'c2', 'c3', 'f3']
答案 1 :(得分:2)
您可以使用itertools.chain
:
>>> d=[('a', {'b': 'c1', 'd': 'f1'}),
('a', {'bb': 'c2', 'dd': 'f2'}),
('a', {'bbb': 'c3', 'ddd': 'f3'})]
>>> from itertools import chain
>>> list(chain.from_iterable( x[1].values() for x in d ))
['c1', 'f1', 'f2', 'c2', 'c3', 'f3']
答案 2 :(得分:0)
使用reduce
作为替代答案:
import operator
reduce(operator.add,(a.values() for k,a in d))
也许不是最好的主意,但它确实有效。基本上相当于Blender的
sum([a.values() for k, a in d], [])