这个问题的另一个答案:
list_of_lists = [
[1, 2, 3, 0],
[1, 2, 3, 4],
[5, 6, 7, 8]]
dict_of_lists = {
'a': [1, 2, 3, 0],
'b': [1, 2, 3, 4],
'c': [5, 6, 7, 8]}
def sort_list_of_lists(lst, idx):
# idx - is index of list to use for sorting all the lists
return list(list(tup) for tup in zip(*sorted(zip(*lst), key=lambda x: x[idx])))
def sort_dict_of_lists(dct, key):
# key - is key of list to use for sorting all the lists
keys = list(dct.keys())
# get list from dict
lst = [dct[key_] for key_ in keys]
# get idx from key
idx = keys.index(key)
# use function 'sort_list_of_lists' for actual sorting
return {key_: lst_ for key_, lst_ in zip(keys, sort_list_of_lists(lst, idx))}
sorted_list_of_lists = sort_list_of_lists(list_of_lists, idx=0)
sorted_dict_of_lists = sort_dict_of_lists(dict_of_lists, key='a')
如果我遇到这样的问题,我会用pandas
它来解决它 - 处理表格的非常方便和有效的工具:
import pandas as pd
dataframe_from_list = pd.DataFrame(list_of_lists).T
dataframe_from_dict = pd.DataFrame(dict_of_lists)
dataframe_from_list.sort_values(by=0, inplace=True)
dataframe_from_dict.sort_values(by='a', inplace=True)