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