我目前有以下字典串列:
[
{'id': '1', 'sim': 0.81},
{'id': '1', 'sim': 0.72},
{'id': '2', 'sim': 0.85},
{'id': '2', 'sim': 0.81},
{'id': '2', 'sim': 0.72}
]
我想洗掉沒有最高 sim 的重復項并獲得以下資訊:
[
{'id': '1', 'sim': 0.81},
{'id': '2', 'sim': 0.85},
]
uj5u.com熱心網友回復:
一種方法是使用pandas:
import pandas as pd
d = [
{'id': '1', 'sim': 0.81},
{'id': '1', 'sim': 0.72},
{'id': '2', 'sim': 0.85},
{'id': '2', 'sim': 0.81},
{'id': '2', 'sim': 0.72}
]
df = pd.DataFrame(d)
df = df.groupby(['id'], sort=False)['sim'].max()
然后,您可以繼續將其用作資料框,或者根據您的需要回傳嵌套字典。
uj5u.com熱心網友回復:
sims_list = [
{'id': '1', 'sim': 0.81},
{'id': '1', 'sim': 0.72},
{'id': '2', 'sim': 0.85},
{'id': '2', 'sim': 0.81},
{'id': '2', 'sim': 0.72}
]
result = []
for each_sim in sims_list:
for each_result in result:
if each_result["id"] == each_sim["id"]:
each_result["sim"] = max(each_result["sim"], each_sim["sim"])
break
else:
result.append(each_sim)
print(result)
輸出
[{'id': '1', 'sim': 0.81}, {'id': '2', 'sim': 0.85}]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/427047.html
