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. The function should return the total cost as a float. If the given list of items is empty, the function should return 0.0.
  
  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)==82.45
  
  assert calculate_total_cost([], 7.50, 0.095)==0.0
  
  assert calculate_total_cost([ 
   {"name": "widget", "price": 20, "quantity": 2 },
   {"name": "thingy", "price": 15, "quantity": 3 },
  ], 10.00, 0.10)==95.00
  
  assert calculate_total_cost([ 
   {"name": "widget", "price": 5, "quantity": 4 },
  ], 5.00, 0.08)==27.00
output: def calculate_total_cost(items, shipping_cost, tax_rate):
      if not items:
          return 0.0
      subtotal = sum(item["price"] * item["quantity"] for item in items)
      total_cost = subtotal + shipping_cost
      total_cost += total_cost * tax_rate
      return round(total_cost, 2)