T = {'a': {'c': 'A', 'path': '/c'}, 'e': {'c': 'E', 'path': '/e'}, 's': {'c': 'S', 'path': '/s'}}
我需要所有'path'元素作为列表。我知道我可以在单个中迭代所有内容,但我想知道其他 pythonic 提取它的方法。
答案 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']