我有一个我想排序的元素列表,但我不想对它们进行排序,只有那些具有特定状态的元素。举例来说,假设我有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的方式。你不需要第二个列表,但除此之外.. –