繁体   English   中英

展平,删除重复项,并在python中对列表进行排序

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM