展平,删除重复项,并在python

时间:2016-04-12 19:56:27

标签: python python-3.x

this answer我有一个扁平的列表。

现在我想删除重复项并对列表进行排序。目前我有以下内容:

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。我有什么作品,但我想看看是否有更好的东西(更快,更具可读性等)

2 个答案:

答案 0 :(得分:3)

实际上,如果你只是删除不需要的列表(),你就可以得到一个很好的解决原始问题的方法。我认为你的代码是完全可读和高效的。

y = sorted(set(x), key=lambda s:s.lower())

答案 1 :(得分:1)

由于results[env]是一个字典,您可以创建一组联合值而不是展平值,然后对结果进行排序:

>>> sorted(set().union(*results[env].values()), key=str.lower)

另请注意,您不需要使用lambda功能作为密钥,只需使用str.lower方法即可。