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

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

在列表中過濾字典

在列表中過濾字典

qq_遁去的一_1 2021-05-04 13:18:24
我需要dictionary在內過濾list。我的數據如下所示:[('John', 'Samantha', {'source': 'family'}), ('John', 'Jill', {'source': 'work'})]我需要使用過濾記錄source=family,我嘗試了以下操作,但沒有成功:expectedResult = [i for i in my_list if i['source'] == 'family']非常感謝您的幫助!
查看完整描述

3 回答

?
慕絲7291255

TA貢獻1859條經驗 獲得超6個贊

在您的列表理解中,i是元組之一,所以('John', 'Samantha', {'source': 'family'})('John', 'Jill', {'source': 'work'})。那不是字典,所以你不能像字典一樣對待它!

如果您的元組始終由3個元素組成,而第3個元素是帶source鍵的字典,請使用:

[i for i in my_list if i[2]['source'] == 'family']

如果這些假設中的任何一個都不成立,則必須添加更多代碼。例如,如果字典始終在那兒,但是'source'鍵可能丟失了,那么dict.get()當鍵不在那兒時,您可以使用它來返回默認值:

[i for i in my_list if i[2].get('source') == 'family']

如果元組的長度可以變化,但是字典始終是最后一個元素,則可以使用負索引:

[i for i in my_list if i[-1]['source'] == 'family']

等。作為程序員,您始終必須檢查這些假設。



查看完整回答
反對 回復 2021-05-25
?
紫衣仙女

TA貢獻1839條經驗 獲得超15個贊

我建議您基于理解,采用以下解決方案,僅假設字典中始終有一個名為“源”的鍵,如您在評論中所述:


my_list = [('John', 'Samantha', {'source': 'family'}),

           ('John', 'Jill', {'source': 'work'}),

           ('Mary', 'Joseph', {'source': 'family'})]


# Keep only elements including a dictionary with key = "source" and value = "family" 

my_filtered_list = [t for t in my_list if any((isinstance(i,dict) and i['source'] == 'family') for i in t)]

print(my_filtered_list)  # [('John', 'Samantha', {'source': 'family'}), ('Mary', 'Joseph', {'source': 'family'})]


# If needed: remove the dictionary from the remaining elements

my_filtered_list = [tuple(i for i in t if not isinstance(i,dict)) for t in my_filtered_list]

print(my_filtered_list)  # [('John', 'Samantha'), ('Mary', 'Joseph')]


查看完整回答
反對 回復 2021-05-25
?
米脂

TA貢獻1836條經驗 獲得超3個贊

您可以使用過濾器功能過濾列表


>>> li = [('John', 'Samantha', {'source': 'family'}),

...  ('John', 'Jill', {'source': 'work'})]

>>>

>>> filtered = list(filter(lambda x: x[2]['source'] == 'family', li))

>>>

>>> filtered

[('John', 'Samantha', {'source': 'family'})]

>>>


查看完整回答
反對 回復 2021-05-25
  • 3 回答
  • 0 關注
  • 171 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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