簡體   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