我有一個字典的列表,我想刪除任何重複他們的密鑰的字典。什麼是做到這一點如最好的辦法:檢查一個密鑰列表中的一個鍵的唯一值
例如字典:
product_1={ 'id': 1234, 'price': 234}
List_of_products[product1:, product2,...........]
哪有我的產品清單,所以我必須根據自己的產品[「身份證」]
我有一個字典的列表,我想刪除任何重複他們的密鑰的字典。什麼是做到這一點如最好的辦法:檢查一個密鑰列表中的一個鍵的唯一值
例如字典:
product_1={ 'id': 1234, 'price': 234}
List_of_products[product1:, product2,...........]
哪有我的產品清單,所以我必須根據自己的產品[「身份證」]
a = [{'id': 124, 'price': 234}, {'id': 125, 'price': 234}, {'id': 1234, 'price': 234}, {'id': 1234, 'price': 234}]
a.sort()
for indx, val in enumerate(a):
if val['id'] == a[indx+1]['id']:
del a[indx]
非重複的產品
非常好,很簡單,謝謝 – Yunti
可能會出現IndexError:列表索引超出範圍,例如,a = [{'id':124,'price':234},{'id':125''price ':234},{'id':34,'price':234}]' – SparkAndShine
@sparkandshine不需要它,因爲枚舉需要處理 –
選擇其中id
相同的值不同的產品詞典之一。使用itertools.groupby
,
import itertools
list_products= [{'id': 12, 'price': 234},
{'id': 34, 'price': 456},
{'id': 12, 'price': 456},
{'id': 34, 'price': 78}]
list_dicts = list()
for name, group in itertools.groupby(sorted(list_products, key=lambda d : d['id']), key=lambda d : d['id']):
list_dicts.append(next(group))
print(list_dicts)
# Output
[{'price': 234, 'id': 12}, {'price': 456, 'id': 34}]
如果具有相同id
產品的字典是完全一樣的,有在Remove duplicate dict in list in Python描述一個簡單的方法。這是一個MWE。 「
list_products= [{'id': 12, 'price': 234},
{'id': 34, 'price': 456},
{'id': 12, 'price': 234},
{'id': 34, 'price': 456}]
result = [dict(t) for t in set([tuple(d.items()) for d in list_products])]
print(result)
# Output
[{'price': 456, 'id': 34}, {'price': 234, 'id': 12}]
」重複他們的密鑰的字典「我不明白。你想做什麼? – 2016-05-31 13:59:23
您可以使用將id映射到product_dict的字典,而不是列表。 – syntonym
@LutzHorn OP有多個字典,其中有一個鍵'id',可能出現在幾個字典中,它們的值恰好相同。他或她會想要清除那些如何。又名循環並從列表結構中的字典中刪除重複的「id」值。 – Torxed