栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何过滤一组(int,str)元组,以仅在第一个元素中返回具有最小值的元组?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何过滤一组(int,str)元组,以仅在第一个元素中返回具有最小值的元组?

您已经实现了我能想到的最简单的方法。我唯一要进行的更改就是对循环进行修改-正在使用更简洁的版本

min

seen = defaultdict(lambda: 1)  # `lambda: float('inf')` if scores can be > 1for score, url in s:    seen[url] = min(seen[url], score){(v,k) for k,v in seen.items()}# {(0.33, 'http://www.bar.com'), (0.5, 'http://www.foo.com')}

如我所说,如果您真的想要一个更短的解决方案,这不是最简单的方法,但是它是一个简单的方法。大部分挑战是交换URL和分数,以便在删除重复项时可以将URL用作密钥。不用说,排序是这里的前提条件(这就是为什么我不喜欢上面的解决方案的原因)。

{(v, k) for k, v in dict(sorted(((v, k) for k, v in s), reverse=True)).items()}# {(0.33, 'http://www.bar.com'), (0.5, 'http://www.foo.com')}

如果

s
看起来像这样,此解决方案将变得更短:

s2 = {(v,k) for k, v in s}s2 # {('http://www.bar.com', 0.33), ('http://www.bar.com', 0.66), ...}

您只需要这样做

list(dict(sorted(s2, reverse=True)).items())# [('http://www.foo.com', 0.5), ('http://www.bar.com', 0.33)]


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/659778.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号