私は辞書のリストを持っています。私はそのIDキーを繰り返す辞書を削除したいのですが。この例を行うための最善の方法は何です:辞書のリスト内のキーの一意の値を確認してください
例の辞書:
product_1={ 'id': 1234, 'price': 234}
List_of_products[product1:, product2,...........]
どのように製品のリスト私が非彼らの製品をベースにした製品を繰り返してきたので、[「ID」]
私は辞書のリストを持っています。私はそのIDキーを繰り返す辞書を削除したいのですが。この例を行うための最善の方法は何です:辞書のリスト内のキーの一意の値を確認してください
例の辞書:
product_1={ 'id': 1234, 'price': 234}
List_of_products[product1:, product2,...........]
どのように製品のリスト私が非彼らの製品をベースにした製品を繰り返してきたので、[「ID」]
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
の値が異なるプロダクトディクショナリを1つ選択します。同じid
と製品の辞書が全く同じであれば、Remove duplicate dict in list in Pythonで説明したように簡単な方法がある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}]
を使用してください。ここに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}]
「idキーを繰り返す辞書」私は分かりません。あなたは何をしようとしているのですか? –
リストの代わりに、idをproduct_dictにマップするdictを使用することができます。 – syntonym
@LutzHorn OPには、辞書のいくつかに多分現れるキー 'id'を持つ複数の辞書があり、それらの値は同じになります。彼または彼女はそれらのいくつかを取り除きたいと思うでしょう。 Akaは、リスト構造内の辞書から重複した 'id'値を切り取り、削除します。 – Torxed