Python Program to assign each list element value equal to its magnitude order

When it is required to assign each list element value equal to its magnitude order, we can use the set operation, zip method and list comprehension. The magnitude order represents the rank of each element when sorted in ascending order.

Understanding Magnitude Order

Magnitude order assigns ranks based on sorted values. The smallest element gets rank 0, the next smallest gets rank 1, and so on.

Example

Below is a demonstration of assigning magnitude order to list elements ?

my_list = [91, 42, 27, 39, 24, 45, 53]

print("The list is :")
print(my_list)

# Get unique elements and sort them
unique_sorted = sorted(set(my_list))
print("Unique sorted elements:", unique_sorted)

# Create dictionary mapping each unique value to its magnitude order
my_ordered_dict = dict(zip(unique_sorted, range(len(unique_sorted))))
print("Value to magnitude mapping:", my_ordered_dict)

# Map each original element to its magnitude order
my_result = [my_ordered_dict[elem] for elem in my_list]

print("The result is:")
print(my_result)
The list is :
[91, 42, 27, 39, 24, 45, 53]
Unique sorted elements: [24, 39, 42, 45, 53, 27, 91]
Value to magnitude mapping: {24: 0, 39: 1, 42: 2, 45: 3, 53: 4, 27: 5, 91: 6}
The result is:
[6, 2, 5, 1, 0, 3, 4]

Step-by-Step Breakdown

Let's understand how the magnitude order assignment works ?

numbers = [91, 42, 27, 39, 24, 45, 53]

# Step 1: Get unique values and sort them
unique_values = list(set(numbers))
print("Unique values:", unique_values)

sorted_unique = sorted(unique_values)
print("Sorted unique values:", sorted_unique)

# Step 2: Create rank mapping
rank_mapping = {}
for i, value in enumerate(sorted_unique):
    rank_mapping[value] = i

print("Rank mapping:", rank_mapping)

# Step 3: Apply mapping to original list
result = []
for num in numbers:
    result.append(rank_mapping[num])

print("Original list:", numbers)
print("Magnitude orders:", result)
Unique values: [91, 42, 27, 39, 24, 45, 53]
Sorted unique values: [24, 27, 39, 42, 45, 53, 91]
Rank mapping: {24: 0, 27: 1, 39: 2, 42: 3, 45: 4, 53: 5, 91: 6}
Original list: [91, 42, 27, 39, 24, 45, 53]
Magnitude orders: [6, 3, 1, 2, 0, 4, 5]

Alternative Approach Using Pandas

For larger datasets, you can use pandas rank function ?

import pandas as pd

numbers = [91, 42, 27, 39, 24, 45, 53]
df = pd.Series(numbers)

# Get ranks (subtract 1 to start from 0)
magnitude_order = (df.rank(method='dense') - 1).astype(int).tolist()

print("Original list:", numbers)
print("Magnitude orders:", magnitude_order)

Conclusion

Magnitude order assignment maps each element to its rank in the sorted unique values. Use sorted(set()) with zip() for simple cases, or pandas rank() for larger datasets with duplicate handling.

Updated on: 2026-03-26T02:12:06+05:30

211 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements