我有一個我想排序的元素列表,但我不想對它們進行排序,只有那些具有特定狀態的元素。舉例來說,假設我有peole的列表:Python:對列表中的特定元素進行排序
lst = [Mary, John, Anna, Peter, Laura, Lisa, Steve]
他們中有些人有工作,比方說[Anna, Lisa, Steve]
。我想按工作小時數對這些數據進行排序(升序),並將它們移動到列表的開頭,同時保持其餘順序完全相同。所以我們可以說,他們的工作小時數如下:
Anna.job.hours # 10
Lisa.job.hours # 5
Steve.job.hours # 8
分排序後的名單將是這樣的:
[Lisa, Steve, Anna, Mary, John, Peter, Laura]
當然,我可以創建兩個新的列表淘汰原有的一個排序的一個我想排序和把它們放在一起再次實現我追求的:
with_job = [person for person in lst if person.job]
without_job = [person for person in lst if not person.job]
with_job.sort(key=lambda p: p.job.hours)
lst = with_job + without_job
但我不知道是否有一個straigthforward,這樣做的Python的方式。
我覺得你做的足夠Python的方式。你不需要第二個列表,但除此之外.. –