input: Write a function in Python that takes a list of objects and returns a list of those objects sorted by one of their attributes. The function should be named `sort_by_attr` and should take two parameters: the list of objects and the attribute to sort by. If the attribute does not exist in any of the objects, the function should raise a `KeyError`.
  
  def sort_by_attr(objects, attr):
      return sorted(objects, key=lambda item: item[attr])
  
  assert sort_by_attr([{"name": "Alice", "age": 20}, {"name": "Bob", "age": 21}], "age") == [{"name": "Alice", "age": 20}, {"name": "Bob", "age": 21}]
  assert sort_by_attr([{"name": "Charlie", "age": 22}, {"name": "David", "age": 23}], "name") == [{"name": "Charlie", "age": 22}, {"name": "David", "age": 23}]
  assert sort_by_attr([{"name": "Eve", "age": 24}], "age") == [{"name": "Eve", "age": 24}]
  assert sort_by_attr([], "age") == []
output: def sort_by_attr(objects, attr):
      return sorted(objects, key=lambda item: item[attr])