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

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

使用Python從列表中刪除特定的重復項

使用Python從列表中刪除特定的重復項

慕田峪9158850 2022-09-13 19:47:07
假設我有一個對象列表,我想刪除具有相同副本的對象,然后保留具有idpublic: truerecipes = [       {'id': 1, 'public': True},        {'id': 1, 'public': False},        {'id': 2, 'public': False},        {'id': 3, 'public': True},       {'id': 3, 'public': False}    ]list_ = [][list_.append(r) for r in recipes if r.id not in list_]print(list_)要添加的第二個條件是什么?想要的結果:    recipes = [       {'id': 1, public: True},         {'id': 2, public: False},        {'id': 3, public: True},    ]蟒
查看完整描述

3 回答

?
慕尼黑的夜晚無繁華

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

您可以使用 來檢查該條目是否重復。count


recipes = [

   {'id': 1, 'public': True}, 

   {'id': 1, 'public': False}, 

   {'id': 2, 'public': False}, 

   {'id': 3, 'public': True},

   {'id': 3, 'public': False}

]


list = []

[list.append(r) for r in recipes if [i['id'] for i in recipes].count (r['id']) == 1 or r['public']]


return list


查看完整回答
反對 回復 2022-09-13
?
梵蒂岡之花

TA貢獻1900條經驗 獲得超5個贊

這個答案有O(n)時間,希望它足夠了:


ids={}  # Use a set to check for dups

l=[]    # Answer list

for i in recipes: # O(n) time

    if i['id'] in ids:

        if i['public']:

              ids[i['id']]=i

    else:

        ids[i['id']]=len(l)  # renumber the index for later O(1) use

                             # len(l) is a O(1) function, so no need to keep a counter

        l.append(i)

抱歉,這不是一行,但我認為這是很好的做法:)


查看完整回答
反對 回復 2022-09-13
?
月關寶盒

TA貢獻1772條經驗 獲得超5個贊

您可以先根據鍵以相反的順序對列表進行排序,以便所有條目都位于頂部。然后執行列表理解以按順序過濾掉唯一值:'public''public': True'id'


recipes = [{'id': 1, 'public': True}, 

           {'id': 1, 'public': False}, 

           {'id': 2, 'public': False}, 

           {'id': 3, 'public': True},

           {'id': 3, 'public': False}]


recipes.sort(key = lambda r: r['public'], reverse=True)


recipes_unique = []

[recipes_unique.append(r) for r in recipes if 

    r['id'] not in [s['id'] for s in recipes_unique]]


display(recipes_unique)

這提供了所需的結果(如有必要,您當然可以再次排序):'id'


[{'id': 1, 'public': True},

 {'id': 3, 'public': True},

 {'id': 2, 'public': False}]



查看完整回答
反對 回復 2022-09-13
  • 3 回答
  • 0 關注
  • 146 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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