首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如果两个字典有重复的键,则从列表中删除字典

如果两个字典有重复的键,则从列表中删除字典
EN

Stack Overflow用户
提问于 2018-06-06 07:47:43
回答 4查看 80关注 0票数 4

我仍然不太熟悉列表的组成和东西,所以我很感谢你的帮助。

我有一个字典列表,每个字典中包含一个url和一个数字,如下所示:

代码语言:javascript
复制
data = [{'url': 'www.url1.com', 'max': '14.6'},
        {'url': 'www.url2.com', 'max': '17.8'},
        {'url': 'www.url2.com', 'max': '18.4'},
        {'url': 'www.url3.com', 'max': '15.5'}]

我想过滤掉任何具有重复url键的字典,即使max键与其他重复条目不同。

我的预期结果是:

代码语言:javascript
复制
data = [{'url': 'www.url1.com', 'max': '14.6'},
        {'url': 'www.url2.com', 'max': '17.8'},
        {'url': 'www.url3.com', 'max': '15.5'}]

我已经尝试了相当多的事情,但没有一个足够接近,以在这里张贴,以修复。

感谢您的帮助,谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-06-06 08:15:38

尝试创建一个字典理解,然后获取它的值,然后将其转换为列表:

代码语言:javascript
复制
data = [{'url': 'www.url1.com', 'max': '14.6'},
        {'url': 'www.url2.com', 'max': '17.8'},
        {'url': 'www.url2.com', 'max': '18.4'},
        {'url': 'www.url3.com', 'max': '15.5'}]
print(list({v['url']:v for v in data}.values()))

输出:

代码语言:javascript
复制
[{'url': 'www.url1.com', 'max': '14.6'}, {'url': 'www.url2.com', 'max': '18.4'}, {'url': 'www.url3.com', 'max': '15.5'}]
票数 2
EN

Stack Overflow用户

发布于 2018-06-06 07:52:37

这里有一种使用toolz.unique的方法。如果您没有此第三方库,则可以使用等效的unique_everseen itertools recipe

代码语言:javascript
复制
from toolz import unique
from operator import itemgetter

res = list(unique(data, key=itemgetter('url')))

print(res)

[{'url': 'www.url1.com', 'max': '14.6'},
 {'url': 'www.url2.com', 'max': '17.8'},
 {'url': 'www.url3.com', 'max': '15.5'}]
票数 1
EN

Stack Overflow用户

发布于 2018-06-06 08:07:23

对于纯python方法:

代码语言:javascript
复制
data = [{'url': 'www.url1.com', 'max': '14.6'},
        {'url': 'www.url2.com', 'max': '17.8'},
        {'url': 'www.url2.com', 'max': '18.4'},
        {'url': 'www.url3.com', 'max': '15.5'}]

seen_before = []
for d in data:
    if d['url'] not in seen_before:
        seen_before.append(d['url'])
print(seen_before)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50710422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档