Python Forum

Full Version: how to get vairable to sort with list?
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
analyst = list([304, 213, 175, 379, 572, 801, 630])

print(list(analyst))
print(sorted(analyst))

analyst[0] = "Monday "
analyst[1] = "Tuesday "
analyst[2] = "Wednesday "
analyst[3] = "Thursday "
analyst[4] = "Friday "
analyst[5] = "Saturday "
analyst[6] = "Sunday "

print(list(analyst))
print(sorted(analyst))

# i am trying to get two types of information, first the list from monday - sunday with numbers from each day
# the secound print i am trying to get the list with numbers sorted from lowest to highest and the variable with string sorted from lowest to highest
# i get the variable to go from a - z in order but i want them to follow the same order as the list
Note that what you do is to replace the values in the original list, i.e. you have lost the numbers.

values = list([304, 213, 175, 379, 572, 801, 630])
weekdays = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']

# data as list of tuples
data = list(zip(values, weekdays))
print(sorted(data))

print('\n\n')
data = list(zip(weekdays, values))
print(sorted(data, key=lambda x: x[1]))

print('\n\n')
from operator import itemgetter
print(sorted(data, key=itemgetter(1)))
print('\n\n')

# data as dict
data = dict(zip(weekdays, values))
print(sorted(data.items(), key=lambda x: x[1]))
# or alternatives
print(dict(sorted(data.items(), key=lambda x: x[1]))) # as of 3.7 order of insertion of dict elements is preserved
print(sorted(data.items(), key=itemgetter(1)))
print(dict(sorted(data.items(), key=itemgetter(1))))
print('\n\n')

# now going fancy with namedtuple from collections
from collections import namedtuple

Record =  namedtuple('Record', ['day', 'value'])
data = [Record(day, value) for day, value in zip(weekdays, values)]
print(sorted(data, key=lambda x: (x.value, x.day)))
Output:
[(175, 'Wednesday'), (213, 'Tuesday'), (304, 'Monday'), (379, 'Thursday'), (572, 'Friday'), (630, 'Sunday'), (801, 'Saturday')] [('Wednesday', 175), ('Tuesday', 213), ('Monday', 304), ('Thursday', 379), ('Fri day', 572), ('Sunday', 630), ('Saturday', 801)] [('Wednesday', 175), ('Tuesday', 213), ('Monday', 304), ('Thursday', 379), ('Fri day', 572), ('Sunday', 630), ('Saturday', 801)] [('Wednesday', 175), ('Tuesday', 213), ('Monday', 304), ('Thursday', 379), ('Fri day', 572), ('Sunday', 630), ('Saturday', 801)] {'Wednesday': 175, 'Tuesday': 213, 'Monday': 304, 'Thursday': 379, 'Friday': 572 , 'Sunday': 630, 'Saturday': 801} [('Wednesday', 175), ('Tuesday', 213), ('Monday', 304), ('Thursday', 379), ('Fri day', 572), ('Sunday', 630), ('Saturday', 801)] {'Wednesday': 175, 'Tuesday': 213, 'Monday': 304, 'Thursday': 379, 'Friday': 572 , 'Sunday': 630, 'Saturday': 801} [Record(day='Wednesday', value=175), Record(day='Tuesday', value=213), Record(da y='Monday', value=304), Record(day='Thursday', value=379), Record(day='Friday', value=572), Record(day='Sunday', value=630), Record(day='Saturday', value=801)] >>>