【问题标题】:Sort list of lists based on a dict values as key基于 dict 值作为键对列表列表进行排序
【发布时间】:2016-06-02 11:12:47
【问题描述】:

我看到了这种方法,可以根据 dict 值作为键对列表进行排序。

Original Question here

我们可以使用这种方法根据每个列表中的第一个值对列表进行排序吗?

trial_dict = {1:'ABC', 2:'PQR', 3:'DEF'}
trial_list = [['ABC','-','+','/','+','-','*'],
              ['DEF','-','+','/','+','-','*'],
              ['PQR','-','+','/','+','-','*']]

排序后:

trial_list = [['ABC','-','+','/','+','-','*'],
              ['PQR','-','+','/','+','-','*'],
              ['DEF','-','+','/','+','-','*']]

【问题讨论】:

  • 能做到吗?你试过了吗?
  • 如果 trial_dict 是 {1:'ABC', 2:'ABC', 3:'ABC'} 怎么办?你确定你不想要字典其他方式吗?

标签: python list sorting dictionary


【解决方案1】:

您可以使用sorted() 函数。

trial_dict = {1:'ABC', 2:'PQR', 3:'DEF'}
trial_dict_inv = {v: k for k, v in trial_dict.items()}
trial_list = [['ABC','-','+','/','+','-','*'],
          ['DEF','-','+','/','+','-','*'],
          ['PQR','-','+','/','+','-','*']]


print sorted(trial_list, key= lambda z:trial_dict_inv[z[0]])

输出:

[['ABC', '-', '+', '/', '+', '-', '*'], ['PQR', '-', '+', '/', '+','-', '*'], ['DEF', '-', '+', '/', '+', '-', '*']]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-01
    • 2015-05-02
    • 2011-06-14
    • 1970-01-01
    相关资源
    最近更新 更多