Skip to content

Instantly share code, notes, and snippets.

@eclecticmiraclecat
Created November 3, 2020 04:56
Show Gist options
  • Save eclecticmiraclecat/8276a5b68f0e3bfc69449f383e1df6a1 to your computer and use it in GitHub Desktop.
Save eclecticmiraclecat/8276a5b68f0e3bfc69449f383e1df6a1 to your computer and use it in GitHub Desktop.
In [50]: students =[
{'name': 'Paul Allen', 'class': 'Science', 'grade': 'A'},
{'name': 'paul allen', 'class': 'Math', 'grade': 'C'},
{'name': 'Bob Lewis', 'class': 'Science', 'grade': 'D'},
{'name': 'Bob Lewis', 'class': 'math', 'grade': 'b'},
{'name': 'bob Lewis', 'class': 'History', 'grade': 'f'}
]
In [52]: sorted(students)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-52-7d3dd5d8afa9> in <module>
----> 1 sorted(students)
TypeError: '<' not supported between instances of 'dict' and 'dict'
In [53]: sorted(students, key=lambda k: k['name'])
Out[53]:
[{'name': 'Bob Lewis', 'class': 'Science', 'grade': 'D'},
{'name': 'Bob Lewis', 'class': 'math', 'grade': 'b'},
{'name': 'Paul Allen', 'class': 'Science', 'grade': 'A'},
{'name': 'bob Lewis', 'class': 'History', 'grade': 'f'},
{'name': 'paul allen', 'class': 'Math', 'grade': 'C'}]
In [54]: sorted(students, key=lambda k: (k['name'], k['grade']))
Out[54]:
[{'name': 'Bob Lewis', 'class': 'Science', 'grade': 'D'},
{'name': 'Bob Lewis', 'class': 'math', 'grade': 'b'},
{'name': 'Paul Allen', 'class': 'Science', 'grade': 'A'},
{'name': 'bob Lewis', 'class': 'History', 'grade': 'f'},
{'name': 'paul allen', 'class': 'Math', 'grade': 'C'}]
In [55]: sorted(students, key=lambda k: (k['name'].lower(), k['grade'].lower()))
Out[55]:
[{'name': 'Bob Lewis', 'class': 'math', 'grade': 'b'},
{'name': 'Bob Lewis', 'class': 'Science', 'grade': 'D'},
{'name': 'bob Lewis', 'class': 'History', 'grade': 'f'},
{'name': 'Paul Allen', 'class': 'Science', 'grade': 'A'},
{'name': 'paul allen', 'class': 'Math', 'grade': 'C'}]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment