如何检查字符串中的子字符串,直到 python 中某个字符出现?

How to check a substring in a string up until a certain occurrence of a character in python?

我收到包含客户名称、订单价格和订单数量的订单。

订单格式如下:{'first order': ['Alex', '100@2']}

(100 refers to a price and 2 refers to a quantity).

所以我有不同的命令:{'first order': ['Alex', '99@2'], 'second order': ['Ann', '101@2'], 'third order': ['Nick', '110@3']}

我们需要比较价格,看看哪个价格最高,哪个价格最低。

我想通过将子字符串分成两部分来做到这一点,第一部分在“@”符号之前,第二部分在“@”符号之后,然后从第一部分中提取数字并进行比较与他人

您认为解决此问题的最有效方法是什么?

谢谢

我建议将字典转换为字典列表,并将字符串转换为两个浮点数。例如:

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()
]

然后如果你想找到最高价和最低价你可以很容易地使用min/max函数:

highest = max(orders, key=lambda k: k["price"])
lowest = min(orders, key=lambda k: k["price"])

print(highest)
print(lowest)

打印:

{'order': 'third order', 'name': 'Nick', 'price': 110.0, 'quantity': 3.0}
{'order': 'first order', 'name': 'Alex', 'price': 99.0, 'quantity': 2.0}