亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用列表理解從另一個列表中獲取一些數據?

如何使用列表理解從另一個列表中獲取一些數據?

慕工程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 關注
  • 121 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號