第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

從字典中獲取沒有唯一屬性的唯一對象列表

從字典中獲取沒有唯一屬性的唯一對象列表

翻閱古今 2023-12-12 14:58:22
我有一本字典,其中包含對象列表,其值如下:{"A": [obj1, obj2, obj3], "B": [obj1, obj4, obj5]}在這里,我想獲得一個獨特對象的列表,例如[obj1, obj2, obj3, obj4, obj5]這些對象沒有單一的唯一屬性(例如唯一的 id)。我嘗試使用 set() 但由于對象不可散列,所以我沒有成功。我怎樣才能完成這個任務(wù)?
查看完整描述

3 回答

?
qq_遁去的一_1

TA貢獻1725條經(jīng)驗 獲得超8個贊

假設(shè)你的字典是m你可以使用set這樣的:


s = set()

m = {'a': [1,2,3], 'b': [2,3,4,5,6]}

for v in m.values():

    t_set = set(v)

    s.update(t_set)


s

{1, 2, 3, 4, 5, 6}

我看到你說你的對象不可散列。如果它們是您創(chuàng)建的對象,您可以覆蓋該__hash__()函數(shù)并定義您自己的方式以使它們可散列。


查看完整回答
反對 回復 2023-12-12
?
有只小跳蛙

TA貢獻1824條經(jīng)驗 獲得超8個贊

您可以使用itertools.chain它對所有值創(chuàng)建迭代器。然后是一個簡單的技巧,使用dict.fromkeys而不是集合來保留順序,同時僅保留唯一值。(請記住,對象必須是可索引/可散列的)您將需要弄清楚這些對象如何進行比較才能完成此任務(wù)。


from itertools import chain


data = {"A": [obj1, obj2, obj3], "B": [obj1, obj4, obj5]}


output = list(dict.fromkeys(chain(*data.values())))

[obj1, obj2, obj3, obj4, obj5]


查看完整回答
反對 回復 2023-12-12
?
汪汪一只貓

TA貢獻1898條經(jīng)驗 獲得超8個贊

以下作品。


def get_unique_objs(data):

? ? ret = []

? ? for obj_list in data.values():

? ? ? ? for obj in obj_list:

? ? ? ? ? ? if obj not in ret:

? ? ? ? ? ? ? ? ret.append(obj)

? ? return ret

這將返回一個列表,其中根據(jù)對象的__eq__ 魔術(shù)方法(如果可用)和/或與運算符的比較is(由 Python 解釋器實現(xiàn),始終可用且無法覆蓋),沒有兩個對象相等。

在某些情況下,可能還會有更多的因素發(fā)揮作用。?這顯示了檢查是否應(yīng)將對象添加到結(jié)果列表中的完整過程。


查看完整回答
反對 回復 2023-12-12
  • 3 回答
  • 0 關(guān)注
  • 169 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號