python - 从字典列表中删除具有重复值的字典

标签 python list dictionary

我有一个字典列表如下:

[{'ppm_error': -5.441115144810845e-07, 'key': 'Y7', 'obs_ion': 1054.5045550349998},
{'ppm_error': 2.3119997582222951e-07, 'key': 'Y9', 'obs_ion': 1047.547178035},
{'ppm_error': 2.3119997582222951e-07, 'key': 'Y9', 'obs_ion': 1381.24928035},
{'ppm_error': -2.5532659838679713e-06, 'key': 'Y4', 'obs_ion': 741.339467035},
{'ppm_error': 1.3036219678359603e-05, 'key': 'Y10', 'obs_ion': 1349.712302035},
{'ppm_error': 3.4259216556970878e-06, 'key': 'Y6', 'obs_ion': 941.424286035},
{'ppm_error': 1.1292770047090912e-06, 'key': 'Y2', 'obs_ion': 261.156025035},
{'ppm_error': 1.1292770047090912e-06, 'key': 'Y2', 'obs_ion': 389.156424565},
{'ppm_error': 9.326980606898406e-06, 'key': 'Y5', 'obs_ion': 667.3107950350001}
]

我想删除具有重复键的字典,以便只保留具有唯一“键”的字典。哪个字典出现在最终列表中并不重要。所以最终列表应该如下所示:

[{'ppm_error': -5.441115144810845e-07, 'key': 'Y7', 'obs_ion': 1054.5045550349998},
{'ppm_error': 2.3119997582222951e-07, 'key': 'Y9', 'obs_ion': 1381.24928035},
{'ppm_error': -2.5532659838679713e-06, 'key': 'Y4', 'obs_ion': 741.339467035},
{'ppm_error': 1.3036219678359603e-05, 'key': 'Y10', 'obs_ion': 1349.712302035},
{'ppm_error': 3.4259216556970878e-06, 'key': 'Y6', 'obs_ion': 941.424286035},
{'ppm_error': 1.1292770047090912e-06, 'key': 'Y2', 'obs_ion': 261.156025035},
{'ppm_error': 9.326980606898406e-06, 'key': 'Y5', 'obs_ion': 667.3107950350001}
]

是否可以使用 itertools.groupby 函数来执行此操作,或者是否有其他方法可以解决此问题?有什么建议吗?

最佳答案

如果顺序很重要,那么您可以使用 collections.OrderedDict收集所有元素,像这样

from collections import OrderedDict
print OrderedDict((d["key"], d) for d in my_list).values()

如果顺序无关紧要,你可以使用普通字典,像这样

print {d["key"]:d for d in my_list}.values()

关于python - 从字典列表中删除具有重复值的字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22875991/

相关文章:

python - 如何在 Python 中查看和打印 PDF?

python-3.x - 如何按姓氏对姓名进行排序

dictionary - 启用RFC的功能模块中键值列表的数据结构?

javascript - JS - 将字符串映射到对象数组 ¿如何更改键名?

python - Python中的曲线拟合,需要曲线形状几乎完全匹配,而不是最小化均方差的曲线

python - 如何优化此代码(python 中的双循环)?

python - xml.dom.minidom : Getting CDATA values

python - 比较两个列表以找到更大的列表

list - scala 过滤元组列表的列表

python - 查找最高键