我有一个包含一些项目的列表.我想按如下方式重新排列它们:
product_name 应该是第一个元素items从图像开始应该是最后一个(也应该排序)杂项:product_name我的列表中只有一个(并且总是一个),里面的项目没有特定的顺序排列(也就是说,项目的顺序是随机的 - 我只举了一个例子).此外,该列表包含唯一items.
以下是它的工作,但似乎有点冗长和低效.我确信有一种方法可以在单个for循环中执行此操作,但我现在有一个脑筋.是否有更简单的方法来实现以下目标?
def rearrange(header):
final = ['product_name']
images = sorted([item for item in header if item.startswith('image')])
for item in header:
if item != 'product_name' and not item.startswith('image'):
final.append(item)
final += images
return final
header = [
'word2',
'image_4',
'word1',
'product_name',
'image_3',
'image_1',
'image_5',
'word3',
'image_6',
'image_2',
]
print(rearrange(header))
Run Code Online (Sandbox Code Playgroud)
结果:
Run Code Online (Sandbox Code Playgroud)['product_name', 'word2', 'word1', 'word3', 'image_1', 'image_2', 'image_3', 'image_4', 'image_5', 'image_6']
您可以使用内置的key关键字sorted:
sorted(header, key=lambda x: (x.startswith('image') + (x != 'product_name'), x))
Run Code Online (Sandbox Code Playgroud)
结果:
['product_name', 'word1', 'word2', 'word3', 'image_1', 'image_2', 'image_3', 'image_4', 'image_5', 'image_6']
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
54 次 |
| 最近记录: |