对列表A进行排序,该列表A包含基于列表B的值的对值(键,值),列表B是列表A中的对的值

时间:2017-05-05 13:07:26

标签: python list sorting dictionary tuples

我有一个字典A,其中包含以下值:

dict_A ={"George Washington":{
 'lname':'Washinghton',
 'fname':'George',
 'class_id':'math',
 'teacher':'John Doe', 
 'end_year_score' : 8}

我将其转换为列表A

List_A = [x for x in dict_A.iteritems()]

我的List_A现在如下:

[(George Washington', {, u'fname': 'George', u'class_id' : 'math', u'teacher' : 'John Doe', u'end_year_score' : 8})]

新修改

List_B的示例

List_B = [(George Washington', {, u'fname': 'George', u'lname': 'Washington' u'class_id' : 'math', u'teacher' : 'John Doe', u'end_year_score' : 8}), (Genghis Khan', {u'fname': 'Genghis ', u'lname':'Khan', u'class_id' : 'math', u'teacher' : 'John Doe', u'end_year_score' : 6}), ('Queen Victoria', {u'fname': 'Queen', u'lname':'Victoria', u'class_id' : 'math', u'teacher' : 'John Doe', u'end_year_score' : 5}), etc...,]

但就像我说我有一个List_B作为我的List_A对的价值。

现在假设我想根据List_B的 end_year_score 的数值对List_A进行排序。我该怎么做?

我试过这个:

List_A.sort(key=lambda x: x[4]) >>> IndexError: tuple index out of range
List_A.sort(key=lambda x: x[1,4]) >>> TypeError: tuple indices must be integers, not tuple
List_A.sort(key=lambda x: x[1]['end_year_score') >>> TypeError: unhashable type: 'dict'

实际上可能吗?

1 个答案:

答案 0 :(得分:2)

你的元组有一个字符串和一个字典

这就是你可以这样做的方式

List_A.sort(cmp = lambda x,y:cmp(x[1]['end_year_score'],y[1]['end_year_score']))