0 out of 464 challenges solved

Find Top N Expensive Items

Write a Python function `expensive_items(items, n)` that takes a list of dictionaries `items` and an integer `n` as input. Each dictionary in the list represents an item with at least two keys: `name` (a string) and `price` (a float). The function should return a list of the `n` most expensive items, sorted in descending order of their prices.

If there are fewer than `n` items in the list, return all items sorted by price. If two items have the same price, their order in the result can be arbitrary.

#### Example Usage
```python [main.nopy]
items = [
    {'name': 'Item-1', 'price': 101.1},
    {'name': 'Item-2', 'price': 555.22},
    {'name': 'Item-3', 'price': 45.09}
]

print(expensive_items(items, 2))
# Output: [{'name': 'Item-2', 'price': 555.22}, {'name': 'Item-1', 'price': 101.1}]

print(expensive_items(items, 1))
# Output: [{'name': 'Item-2', 'price': 555.22}]
```

#### Constraints
- The `items` list will contain dictionaries with at least the keys `name` and `price`.
- The `price` values will be non-negative floats.
- The function should handle cases where `n` is greater than the number of items in the list.
import heapq

def expensive_items(items, n):
    """
    Find the n most expensive items from the given list.

    Args:
        items (list): A list of dictionaries, each containing 'name' and 'price'.
        n (int): The number of top expensive items to return.

    Returns:
        list: A list of the n most expensive items sorted by price in descending order.
    """
    # Placeholder for the solution
    pass