刪除Python列表中的重復(fù)DECT我有一個字典列表,我想用相同的鍵和值對刪除這些數(shù)據(jù)集。關(guān)于這份清單:[{'a': 123}, {'b': 123}, {'a': 123}]我想退貨:[{'a': 123}, {'b': 123}]另一個例子:關(guān)于這份清單:[{'a': 123, 'b': 1234}, {'a': 3222, 'b': 1234}, {'a': 123, 'b': 1234}]我想退貨:[{'a': 123, 'b': 1234}, {'a': 3222, 'b': 1234}]
3 回答

狐的傳說
TA貢獻1804條經(jīng)驗 獲得超3個贊
[dict(t) for t in {tuple(d.items()) for d in l}]
set
set(tuple(d.items()) for d in l)
dict
.
l
是原始列表 d
是列表中的字典之一。 t
是從字典中創(chuàng)建的元組之一。
set
l = [{'a': 123, 'b': 1234}, {'a': 3222, 'b': 1234}, {'a': 123, 'b': 1234}]seen = set()new_l = []for d in l: t = tuple(d.items()) if t not in seen: seen.add(t) new_l.append(d)print new_l
[{'a': 123, 'b': 1234}, {'a': 3222, 'b': 1234}]
d.items()

慕娘9325324
TA貢獻1783條經(jīng)驗 獲得超4個贊
>>> d = [{'a': 123}, {'b': 123}, {'a': 123}]>>> [i for n, i in enumerate(d) if i not in d[n + 1:]][{'b': 123}, {'a': 123}]
dict
n
enumerate
).

慕的地10843
TA貢獻1785條經(jīng)驗 獲得超8個贊
a = [{'a': 123}, {'b': 123}, {'a': 123}]b = []for i in range(0, len(a)): if a[i] not in a[i+1:]: b.append(a[i])
添加回答
舉報
0/150
提交
取消