为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用列表理解从另一个列表中获取一些数据?

如何使用列表理解从另一个列表中获取一些数据?

慕工程0101907 2022-07-12 09:55:40
您好,我有以下清单:a = [{'Hello':5, 'id':[{'cat':'billy', 'dog': 'Paul'}, {'cat':'bill', 'dog': 'Pau'}]},     {'Hello':1, 'id':[{'cat':'Harry', 'dog': 'Peter'}, {'cat':'Hary', 'dog': 'Pete'}]}]我想建立以下列表(使用列表推导):b = ['billy', 'bill', 'Hary', 'Harry']我尝试了这些但没有成功:[x for y in a for b in y['id'] for x in b][x for y in a for b in y['id'] for x in b['cat']]
查看完整描述

4 回答

?
白衣染霜花

TA贡献1796条经验 获得超10个赞

如果要使用双循环:

[x['cat'] for y in a for x in y['id'] if type(x) is  dict]

你必须 :

  1. 将 a 列表中的值作为列表获取(对于 a 中的 y)

  2. 获取 y 中的 'id'(对于 x in y['id'])

  3. 通过过滤字典跳过字符串“吃”(如果类型(x)是字典)

  4. 访问“猫”

如果你 dict x, 有多个值,你可以使用

[x.values() for y in a for x in y['id'] if type(x) is  dict]]


查看完整回答
反对 回复 2022-07-12
?
30秒到达战场

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


查看完整回答
反对 回复 2022-07-12
?
神不在的星期二

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


查看完整回答
反对 回复 2022-07-12
?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

你要


b = [x['id'][0]['cat'] for x in a]

的每个元素a都是一个看起来像


{

    'Hello': ...,

    'id': [

        {

            'cat': ...

        },

        ...

    ]

}


查看完整回答
反对 回复 2022-07-12
  • 4 回答
  • 0 关注
  • 144 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号