假设我有以下列表:
List1=['Name1','Name3','Color1','Size2','Color3','Color2','Name2','Size1', 'ID']
List2=['ID','Color1','Color2','Size1','Size2','Name1','Name2']
每个列表都将有名为“ID”变量的元素,然后是另外三个类别(名称、颜色和尺寸),其中每个类别中的元素数量不确定。
我想使用以下“排序列表”对这些变量进行排序,而不知道每个类别中将有多少个元素:
SortList=['ID','Name','Size','Color']
我可以得到期望的输出(见下文),虽然我想象中还有更好/更符合Python风格的方法。
>>> def SortMyList(MyList,SortList):
... SortedList=[]
... for SortItem in SortList:
... SortItemList=[]
... for Item in MyList:
... ItemWithoutNum="".join([char for char in Item if char.isalpha()])
... if SortItem==ItemWithoutNum:
... SortItemList.append(Item)
... if len(SortItemList)>1:
... SortItemList=[SortItem+str(I) for I in range(1,len(SortItemList)+1)]
... for SortedItem in SortItemList:
... SortedList.append(SortedItem)
... return SortedList
...
>>>
>>> SortMyList(List1, SortList)
['ID', 'Name1', 'Name2', 'Name3', 'Size1', 'Size2', 'Color1', 'Color2', 'Color3']
>>> SortMyList(List2, SortList)
['ID', 'Name1', 'Name2', 'Size1', 'Size2', 'Color1', 'Color2']
>>>
您有什么建议可以改进我的方法或代码吗?
Name11
这样的条目,你希望它在Name10
之后、Name12
之前? - DSMpep8
和pyflakes
是两个 linters,它们将帮助指出您代码中至少的样式问题。尽管您可能需要对它们的建议持保留态度。grain of salt - Wayne Werner