Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Order an array
#3
Your problem is that you are sorting based on 'string values' and you need to sort based on 'numbers'.

Try the following approach which changes the data structure slightly, and replaces the first element 'string' with an 'integer'. When you are done it is relatively easy to put in the correct punctuation. It is a shame to waste your regular expression pattern, but parsing on semi-colons ';' seems to work.
my_simulated_file =     ['1. one; one one; 5000',
                         '4. four; four four; 9999',
                         '111. oneoneone; oneoneone oneoneone; 111111',
                         '7. seven; seven seven; 777',
                         '6. six; six six; 6666',
                         '11. eleven, eleven eleven, 1111']
           
data = []

for s in my_simulated_file:
    new_s = s                               #make a new copy of the string (bad practice to modify the index)
    new_s=new_s.replace(".", ";", 1)        #replace the first '.' with ';'
    small_list = new_s.split(";")           #parse based on semicolon ';'
    small_list[0] = int(small_list[0])      #replace the first element string with an integer
    data.append(small_list)
    
#Now when sorting, sort will be based on 'integer' first element    
data.sort()    

print("Original List:")
for s in my_simulated_file:
    print(s)

print()
print("Sorted List:")
for s in data:
    print(s)
Output:
Original List: 1. one; one one; 5000 4. four; four four; 9999 111. oneoneone; oneoneone oneoneone; 111111 7. seven; seven seven; 777 6. six; six six; 6666 11. eleven, eleven eleven, 1111 Sorted List: [1, ' one', ' one one', ' 5000'] [4, ' four', ' four four', ' 9999'] [6, ' six', ' six six', ' 6666'] [7, ' seven', ' seven seven', ' 777'] [11, ' eleven, eleven eleven, 1111'] [111, ' oneoneone', ' oneoneone oneoneone', ' 111111']
Lewis
To paraphrase: 'Throw out your dead' code. https://www.youtube.com/watch?v=grbSQ6O6kbs Forward to 1:00
Reply


Messages In This Thread
Order an array - by unrealxqt - Apr-06-2018, 10:09 PM
RE: Order an array - by micseydel - Apr-07-2018, 12:31 AM
RE: Order an array - by ljmetzger - Apr-08-2018, 06:12 PM

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020