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