# Python Lexicographic Order

Python lexicographic order

Before we discuss the lexicographic order in Python, we should understandwhat is lexicographic order and sort according to lexicographic order.

### Lexicographic order

In mathematics, the generalization of the alphabetical order of the dictionaries to sequences of ordered elements or, more generally, we can say that symbols of an ordered set are called the lexicographic order. Hence, lexicographic order is commonly known as dictionary order or lexical order.

### Lexicographic order in Python

In Python, we sort alphabets, words, or strings according to many sorting orders to get the required sorted data in the output. We can sort all these data elements by lexicographic order as well, and we can also sort numbers & symbols with lexicographic order in Python.

In this tutorial, we will sort strings, numbers, words, and lists in lexical order. We will design a program for sorting each type and working of the program.

### Sorting words in lexicographic order

As we have already mentioned that, the lexicographic order is also known as dictionary order. We will arrange words first by their first letter while sorting them according to lexicographic order. We can perform this sorting with two functions, i.e., sort() and sorted().

The only difference between these two functions is that sort() function changes the original array into a sorted array, whereas the sorted() function creates a new sorted array.

Now, look at the following examples:

Example 1: Sorting words in lexicographic order with sort() function:

``` # Define an array with words
Original_Array = ["Python", "Julia", "Go", "MATLAB", "SPSS", "R", "C"]
# Printing original array
print ("The original array: ",Original_Array)
# sorting words in dictionary order
Original_Array.sort()
# printing original array after sorting
print ("Sorted array: ",Original_Array) ```

Output:

``` The original array:  ['Python', 'Julia', 'Go', 'MATLAB', 'SPSS', 'R', 'C']
Sorted array:  ['C', 'Go', 'Julia', 'MATLAB', 'Python', 'R', 'SPSS'] ```

Example 2: Using sorted() function to sort words in lexicographic order:

``` # Define an array with words
Original_Array = ["Python", "Julia", "Go", "MATLAB", "SPSS", "R", "C"]
# using sorted() function to sort words of array
Sorted_Array = sorted(Original_Array)
# printing sorted array
print ("Sorted array: ",Sorted_Array)
# now printing original array
print ("The original array: ",Original_Array) ```

Output:

``` Sorted array:  ['C', 'Go', 'Julia', 'MATLAB', 'Python', 'R', 'SPSS']
The original array:  ['Python', 'Julia', 'Go', 'MATLAB', 'SPSS', 'R', 'C'] ```

We can see the difference in the working of both functions. When we use sorted() function, the original array remains unaffected, whereas when we are using sort() function, the original array itself changes into a sorted array.

### Sorting a string with lexicographic order

In Python, sorting a string in lexicographic order is very similar to sorting words in the same order. However, when we use the lexicographic order on a string, the words present in the string changes into a dictionary or lexicographic order.

Here, we will use the split() function and then sort() function to sort the words of the string in lexicographic order and then print them in the output.

Look at the following example program:

Example – 1

``` # Default lexical sorting function
def LexicalSorting(Orig_str):
# using split() function
WordOfString = Orig_str.split()
# using sort() function
WordOfString.sort()
# printing string in sorted words
for a in WordOfString:
print ( a )
if __name__ == '__main__':
# define a string
Orig_str = "This is an example string to be sorted in the program"
# Printing original string
print ("Original string: ",Orig_str)
# Calling out sorting function
print ("Sorted string words: ")
LexicalSorting(Orig_str) ```

Output:

``` Original string:  This is an example string to be sorted in the program
Sorted string words:
This
an
be
example
in
is
program
sorted
string
the
to ```

Using lexicographic order to sort a given set of numbers

Now, we will sort a given set of numbers according to lexicographic order. If we have a given set of numbers, Let's say (1, 2, 5, 13), then it will be sorted as (1, 13, 2, 5) in lexicographic order.

In the following example, we will take lower and upper range of numbers from user and then we will sort these numbers in the lexicographical order:

``` # default lexicographic sorting function
def LexoSort(lef, righ):
SortSet = []
for a in range(lef, righ + 1):
SortSet.append(str(a))
SortSet.sort()
for a in range(len(SortSet)):
for a in range(len(SortSet)):
print (answer[a], end = " ") # printing sorted numbers
if __name__ == "__main__":
# taking ranges from user
lef = int (input ("Enter the left range number for the range of numbers: "))
righ = int (input ("Enter the left range number for the range of numbers: "))
# calling out sorting function
print ("Sorted numbers from the given range: ")
LexoSort(lef, righ) ```

Output:

``` Enter the left range number for the range of numbers: 7
Enter the left range number for the range of numbers: 31
Sorted numbers from the given range:
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 7 8 9 ```

### Sorting Python lists in lexicographic order

When we use the lexicographical order on a given set of Python lists, the lists are printed sorted according to the dictionary order. Then they sort according to their length (element present in them).

We will use the following two methods to sort Python lists in lexicographic order:

Method 1: Using sort() function twice to sort lists:

``` # initializing a group of lists
GroupofLists = [[1, 4, 3, 2, 7], [5, 4, 1, 3], [1, 4, 6, 7, 2, 6], [9, 8, 7], [1, 9, 3,.7]]
# printing unsorted list
print ("Unsorted lists : " + str(GroupofLists))
# Sorting lists with sort() twice
GroupofLists.sort()
GroupofLists.sort(key = len)
# printing sorted lists
print ("Sorted lists after sorting them by dictionary order and their length " + str(GroupofLists)) ```

Output:

``` Unsorted lists : [[1, 4, 3, 2, 7], [5, 4, 1, 3], [1, 4, 6, 7, 2, 6], [9, 8, 7], [1, 9, 3, 0.7]]
Sorted lists after sorting them by dictionary order and their length [[9, 8, 7], [1, 9, 3, 0.7], [5, 4, 1, 3], [1, 4, 3, 2, 7], [1, 4, 6, 7, 2, 6]] ```

Method 2: Using lambda function to sort lists with lexicographic order:

``` # initializing a group of lists
GroupofLists = [[1, 4, 3, 2, 7], [5, 4, 1, 3], [1, 4, 6, 7, 2, 6], [9, 8, 7], [1, 9, 3,.7]]
# printing unsorted list
print ("Unsorted lists : " + str(GroupofLists))
# using lambda function to sort lists
SortedLists = sorted(GroupofLists, key = lambda a: (len(a), a))
# printing sorted lists
print ("Sorted lists after sorting them by dictionary order and their length " + str(SortedLists)) ```

Output:

``` Unsorted lists : [[1, 4, 3, 2, 7], [5, 4, 1, 3], [1, 4, 6, 7, 2, 6], [9, 8, 7], [1, 9, 3, 0.7]]
Sorted lists after sorting them by dictionary order and their length [[9, 8, 7], [1, 9, 3, 0.7], [5, 4, 1, 3], [1, 4, 3, 2, 7], [1, 4, 6, 7, 2, 6]] ```