4 回答
TA贡献1796条经验 获得超10个赞
如果要使用双循环:
[x['cat'] for y in a for x in y['id'] if type(x) is dict]
你必须 :
将 a 列表中的值作为列表获取(对于 a 中的 y)
获取 y 中的 'id'(对于 x in y['id'])
通过过滤字典跳过字符串“吃”(如果类型(x)是字典)
访问“猫”
如果你 dict x, 有多个值,你可以使用
[x.values() for y in a for x in y['id'] if type(x) is dict]]
TA贡献1828条经验 获得超6个赞
您可以使用内置函数itemgetter和 chain(来自 itertools 模块)
from itertools import chain
from operator import itemgetter
list(map(itemgetter('cat'), chain(*map(itemgetter('id'), a))))
输出:
['billy', 'bill', 'Harry', 'Hary']
或者您可以使用for内部有 2 个循环的列表推导,第一个迭代列表中的所有dict元素,第二个迭代最里面的列表并从键“cat”中获取元素:
[i['cat'] for d in a for i in d['id']]
TA贡献1963条经验 获得超6个赞
您可以为此使用以下列表理解:
>>> a = [{'Hello':5, 'id':[{'cat':'billy', 'dog': 'Paul'}, {'cat':'bill', 'dog': 'Pau'}]},
{'Hello':1, 'id':[{'cat':'Harry', 'dog': 'Peter'}, {'cat':'Hary', 'dog': 'Pete'}]}]
>>> [y['cat'] for x in a for y in x['id']]
['billy', 'bill', 'Harry', 'Hary']
TA贡献1848条经验 获得超2个赞
你要
b = [x['id'][0]['cat'] for x in a]
的每个元素a都是一个看起来像
{
'Hello': ...,
'id': [
{
'cat': ...
},
...
]
}
添加回答
举报
