67 lines
1.4 KiB
Python
67 lines
1.4 KiB
Python
# Sort out the input list ending with special character according to the following weights if the symbols
|
|
|
|
# Weight of the symbols
|
|
# @ - 3
|
|
# * - 2
|
|
# # - 1
|
|
# $ - 0
|
|
|
|
# Input
|
|
# ['abc#','def*','ghi@','jkl$','mno:','pqr#']
|
|
|
|
# Output
|
|
# ['ghi@','def*','abc#''jkl$','mno:','pqr#']
|
|
|
|
# * Sorting should be done for list sets before and after the : keyword
|
|
# * If a special word repeats, maintain original order
|
|
|
|
def flo_sorting(list):
|
|
length = len(list)
|
|
i = 0
|
|
a = 0
|
|
b = 0
|
|
c = 0
|
|
d = 0
|
|
e = 0
|
|
|
|
list2 = []
|
|
newlist = []
|
|
|
|
while i != length:
|
|
if list[i][-1] == ':':
|
|
e = list[i]
|
|
list2 = list[i+1:]
|
|
list2 = flo_sorting(list2)
|
|
break
|
|
elif list[i][-1] == '#':
|
|
a = list[i]
|
|
elif list[i][-1] == '*':
|
|
b = list[i]
|
|
elif list[i][-1] == '$':
|
|
c = list[i]
|
|
elif list[i][-1] == '@':
|
|
d = list[i]
|
|
else:
|
|
break
|
|
i = i+1
|
|
if d != 0:
|
|
newlist.append(d)
|
|
if b != 0:
|
|
newlist.append(b)
|
|
if a != 0:
|
|
newlist.append(a)
|
|
if c != 0:
|
|
newlist.append(c)
|
|
if e != 0:
|
|
newlist.append(e)
|
|
if list2 == []:
|
|
return newlist
|
|
else:
|
|
newlist = newlist+list2
|
|
return newlist
|
|
|
|
|
|
input = ['jkl$', 'def*', 'abc#', 'ghi@', 'mno:', 'pqr#', 'jkl$', 'def*']
|
|
|
|
print(flo_sorting(input))
|