从列表的子元素中获取所有值作为列表

时间:2011-07-11 13:56:10

标签: python

T = {'a': {'c': 'A', 'path': '/c'}, 'e': {'c': 'E', 'path': '/e'}, 's': {'c': 'S', 'path': '/s'}}

我需要所有'path'元素作为列表。我知道我可以在单个中迭代所有内容,但我想知道其他 pythonic 提取它的方法。

2 个答案:

答案 0 :(得分:4)

认为除了iterate之外没办法,所以你可以使用以下代码:

[v['path'] for k,v in T.iteritems() if k in <top level keys to be used>]

根据评论编辑:我使用过iteritems,因为它允许你在必要时使用顶级键执行过滤操作,否则(如果你不关心顶级键)最好使用@ phant0m的解决方案和itervalues

[v['path'] for v in T.itervalues() if k in <top level keys to be used>]

dict.get

[v.get('path') for v in T.itervalues()]

或者,只是为了完整性,不是那么快,而是使用map和lambda:

from operator import itemgetter
map(itemgetter('path'), T.itervalues())

答案 1 :(得分:4)

或更简单:

>>> [x["path"] for x in T.itervalues()]
['/c', '/s', '/e']