我需要在串列中查找具有相同鍵值的字典,并創建一個僅保留第一個字典的新串列。
示例串列:
lst_in = [{'First': 1, 'Second': 4}, {'First': 2, 'Second': 5}, {'First': 3, 'Second': 4}]
要迭代的重復鍵值應該是“第二個”。所以在這個例子中,第一個和第三個字典是相同的。我試圖尋找在字典中的蟒蛇串列中找到重復和的字典查找基于價值重復蟒蛇名單,但我不能找到確切的答案。我只看一個鍵值。字典將始終具有相同的鍵。
預期輸出:
lst_out = [{'First': 1, 'Second': 4}, {'First': 2, 'Second': 5}]
uj5u.com熱心網友回復:
使用 dict 很有趣,向前獲取順序并向后獲取第一個值。
lst_out = list({d['Second']: d
for s in [1, -1]
for d in lst_in[::s]}.values())
或setdefault用于跟蹤每個值的第一個字典:
tmp = {}
for d in lst_in:
tmp.setdefault(d['Second'], d)
lst_out = list(tmp.values())
有趣且可能更快的版本:
add = {}.setdefault
for d in lst_in:
add(d['Second'], d)
lst_out = list(add.__self__.values())
uj5u.com熱心網友回復:
套裝非常適合那些“我已經看過這個了嗎?” 問題。
lst_in = [{'First': 1, 'Second': 4}, {'First': 2, 'Second': 5}, {'First': 3, 'Second': 4}]
found = set()
lst_out = []
for dct in lst_in:
if dct['Second'] not in found:
lst_out.append(dct)
found.add( dct['Second'] )
uj5u.com熱心網友回復:
您可以保留Second值的跟蹤器,并在將字典添加到最終串列時檢查它:
lst_in = [{'First': 1, 'Second': 4}, {'First': 2, 'Second': 5}, {'First': 3, 'Second': 4}]
out = {'keep':[], 'counter':[]}
for dct in lst_in:
if dct['Second'] not in out['counter']:
out['keep'].append(dct)
out['counter'].append(dct['Second'])
print(out['keep'])
輸出:
[{'First': 1, 'Second': 4}, {'First': 2, 'Second': 5}]
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/388302.html
