python - 字母数字字符串的排序列表
问题描述
我有一个字符串列表,每个字符串都类似于 ';2234661;E3006345_2234661_FRONT_Image_Container;\n' 我需要排序。每个字符串都以分号和不同的数字开头,但我需要根据图像角度(例如 FRONT、BACK、LEFT)按照以下排名以非字母顺序对它们进行排序:FRONT BACK LEFT RIGHT INGREDIENTS说明信息营养产品
示例输入:
[';2234661;PRODUCT;', ';2234661;FRONT;', ';2234661;LEFT;', ';2234661;RIGHT;', ';2234661;BACK;', ';2234661;INGREDIENTS;', ';2234661;NUTRITION;', ';2234661;INSTRUCTIONS;', ';2234661;INFO;']
期望的输出
[';2234661;FRONT;', ';2234661;BACK;', ';2234661;LEFT;', ';2234661;RIGHT;', ';2234661;INGREDIENTS;', ';2234661;INSTRUCTIONS;', ';2234661;INFO;', ';2234661;NUTRITION;', ';2234661;PRODUCT;']
这是我的代码,基于我在 stackexchange 上找到的类似问题的解决方案。但是,它返回错误“ValueError: substring not found
galleryImages = [';2234661;PRODUCT;', ';2234661;FRONT;', ';2234661;LEFT;', ';2234661;RIGHT;', ';2234661;BACK;', ';2234661;INGREDIENTS;', ';2234661;NUTRITION;', ';2234661;INSTRUCTIONS;', ';2234661;INFO;']
alphabet = 'FBLRINP'
newGallery = sorted(galleryImages, key=lambda word: [alphabet.index(c) for c in word])
print(newGallery)
解决方案
试试这个..
>>> my_list = [';2234661;PRODUCT;', ';2234661;FRONT;', ';2234661;LEFT;', ';2234661;RIGHT;', ';2234661;BACK;', ';2234661;INGREDIENTS;', ';2234661;NUTRITION;', ';2234661;INSTRUCTIONS;', ';2234661;INFO;']
>>> my_sorting_logic = ['FRONT', 'BACK', 'LEFT', 'RIGHT', 'INGREDIENTS', 'INSTRUCTIONS', 'INFO', 'NUTRITION', 'PRODUCT']
根据键的索引排序
>>> sorted(my_list, key = lambda x : my_sorting_logic.index(x.split(';')[2]))
输出 :
[';2234661;FRONT;', ';2234661;BACK;', ';2234661;LEFT;', ';2234661;RIGHT;', ';2234661;INGREDIENTS;', ';2234661;INSTRUCTIONS;', ';2234661;INFO;', ';2234661;NUTRITION;', ';2234661;PRODUCT;']
推荐阅读
- python - Keras(Tensorflow)创建错误的张量形状(特征,特征)导致OOM内存错误
- c# - How do compare multiple PDF files and get the PDF with the least number of pages in C#?
- twitter-bootstrap - Using thymeleaf value in bootstrap alert
- java - 批量更新列表,然后重新加入
- django - Why do I get this error while running django project even after adding mysql to settings?
- powershell - 确定与 PSFTP 的 SFTP 连接是成功还是失败
- amazon-web-services - 如何使用 aws 每天复制生产数据库
- android - 解析 LiveQuery 未订阅 - Android (Kotlin)
- python - Python 列表到 BigQuery 重复字符串
- java - Java Future:如何在执行 Aysnc 调用时解除对主线程的阻塞