[英]Flatten, remove duplicates, and sort a list of lists in python
从这个答案我有一个扁平的列表。
现在我想删除重复项并对列表进行排序。 目前我有以下内容:
x = itertools.chain.from_iterable(results[env].values()) #From the linked answer
y = sorted(list(set(x)), key=lambda s:s.lower())
有没有更好的方法来实现这一目标? 在我的情况下,x大小约为32,000,y最终大小约为1,100。 我有什么工作,但我想看看有没有更好的(更快,更可读等)
实际上,如果你只是删除不需要的list(),你就可以得到一个很好的解决原始问题的方法。 我认为你的代码是完全可读和高效的。
y = sorted(set(x), key=lambda s:s.lower())
由于results[env]
是一个字典,您可以创建一组联合值而不是展平值,然后对结果进行排序:
>>> sorted(set().union(*results[env].values()), key=str.lower)
另请注意,您不需要使用lambda
函数作为键,您可以简单地使用str.lower
方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.