I receive orders that contain the name of customer, price of order and the quantity of the order.
The format of the order looks like this: {'first order': ['Alex', '100@2']}
(100 refers to a price and 2 refers to a quantity).
So I have different orders: {'first order': ['Alex', '99@2'], 'second order': ['Ann', '101@2'], 'third order': ['Nick', '110@3']}
We need to compare the prices and see which is the highest price and which is the lowest.
I was thinking of doing this by cutting the substring into two parts, the first part before the '@' symbol and the second part after the '@' symbol, then extract the numbers from the first part and compare them with others.
What's the most efficient way you can tell to solve this issue?
Thank you
I'd suggest to transform the dictionary to a list of dictionaries and convert the string to two floats. For example:
orders = {
"first order": ["Alex", "99@2"],
"second order": ["Ann", "101@2"],
"third order": ["Nick", "110@3"],
}
orders = [
{
"order": k,
"name": name,
"price": float(pq.split("@")[0]),
"quantity": float(pq.split("@")[1]),
}
for k, (name, pq) in orders.items()
]
Then if you want to find highest and lowest price you can use min
/max
function easily:
highest = max(orders, key=lambda k: k["price"])
lowest = min(orders, key=lambda k: k["price"])
print(highest)
print(lowest)
Prints:
{'order': 'third order', 'name': 'Nick', 'price': 110.0, 'quantity': 3.0}
{'order': 'first order', 'name': 'Alex', 'price': 99.0, 'quantity': 2.0}