0

私はこれを持っています

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']]

私はその最も簡単で最短の方法をしたい

4

3 に答える 3

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']
于 2013-05-02T07:37:01.620 に答える
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']
于 2013-05-02T07:38:16.880 に答える
0

を使用した単なる代替回答reduce

import operator
reduce(operator.add,(a.values() for k,a in d))

最善のアイデアではないかもしれませんが、うまくいきます。基本的に Blender と同等

sum([a.values() for k, a in d], [])
于 2013-05-02T07:46:44.440 に答える