Kha*_*idi 6 python dictionary list
我想从字典列表中删除重复的字典对象.我不希望dict元素与列表中的另一个dict元素具有相同的'plate'元素.我只想要一次.
datalist = [
{
'plate': "01",
'confidence' : "80"
},
{
'plate': "01",
'confidence' : "60"
},
{
'plate': "02",
'confidence' : "91"
},
{
'plate': "02",
'confidence' : "91"
},
]
Run Code Online (Sandbox Code Playgroud)
我的输出应该是这样的:
datalist = [
{
'plate': "01",
'confidence' : "80"
},
{
'plate': "02",
'confidence' : "91"
},
]
Run Code Online (Sandbox Code Playgroud)
这是我的代码,但我没有得到确切的结果.
def filter(datalist):
previous = ""
for data in datalist:
current = data['plate']
if current is previous:
datalist.remove(data)
previous = current
return datalist
datalist = [
{
'plate': "01",
'confidence' : "80"
},
{
'plate': "01",
'confidence' : "60"
},
{
'plate': "02",
'confidence' : "91"
},
{
'plate': "02",
'confidence' : "91"
},
]
print (filter(datalist))
Run Code Online (Sandbox Code Playgroud)
这给了我输出:
[
{
'plate': "01",
'confidence' : "80"
},
{
'plate': "02",
'confidence' : "91"
},
{
'plate': "02",
'confidence' : "91"
},
]
Run Code Online (Sandbox Code Playgroud)
这是不期望的,我的代码有什么问题.
如果可以接受来自重复组的任何元素,您可以:
datalist = [
{'plate': "01", 'confidence': "80"},
{'plate': "01", 'confidence': "60"},
{'plate': "02", 'confidence': "91"},
{'plate': "02", 'confidence': "91"},
]
result = list({ d['plate'] : d for d in datalist }.values())
print(result)
Run Code Online (Sandbox Code Playgroud)
产量
[{'plate': '02', 'confidence': '91'}, {'plate': '01', 'confidence': '60'}]
Run Code Online (Sandbox Code Playgroud)
我们的想法是创建一个字典,其中键是值,plate
值是字典本身.如果要保留第一个重复条目,请使用reverse:
result = list({d['plate']: d for d in reversed(datalist)}.values())
Run Code Online (Sandbox Code Playgroud)
产量
[{'plate': '02', 'confidence': '91'}, {'plate': '01', 'confidence': '80'}]
Run Code Online (Sandbox Code Playgroud)