input: Write a function to calculate the total cost of a shopping cart. The function should consider the item prices, quantity, shipping cost, and any applicable taxes. If the shopping cart is empty, the function should return 0. The function should take a list of dictionaries representing the items, a float representing the shipping cost, and a float representing the tax rate as input parameters. It should return the total cost as a float.
  assert calculate_total_cost([{"name": "widget", "price": 10, "quantity": 5}, {"name": "thingy", "price": 7, "quantity": 3}, {"name": "doodad", "price": 5, "quantity": 2}], 7.50, 0.095) == 97.575
  assert calculate_total_cost([], 7.50, 0.095) == 0
  assert calculate_total_cost([{"name": "widget", "price": 10, "quantity": 5}], 5.00, 0.08) == 59.0
  assert calculate_total_cost([{"name": "thingy", "price": 7, "quantity": 3}], 2.50, 0.0) == 23.5
  assert calculate_total_cost([{"name": "doodad", "price": 5, "quantity": 2}], 10.00, 0.10) == 20.0
output: def calculate_total_cost(items, shipping_cost, tax_rate):
      if not items:
          return 0
      subtotal = sum(item['price'] * item['quantity'] for item in items)
      total_cost = subtotal + shipping_cost
      total_cost += total_cost * tax_rate
      return total_cost