如何在python lambda函数中放置条件



我想获得最大后缀的用户名。因此,res的输出应该是user0002。我想忽略如果用户名不包含前缀user(此数据实际上抛出异常)。如何将条件放入lambda函数中以忽略user以外的前缀

res = [{ "Username": "user0001"},{ "Username": "user0002"} {"Username": "test"}]
max_user_id = max(res, key=lambda x:int(x['Username'].split("user")[1]))

试试这个:

max([value for entry in res for value in entry.values() if value.startswith("user")])

我个人不喜欢这么长的理解列表,但是这是你想要的,也许你可以从这里拿走:)。

max_user_id = max(res, key=lambda x:int(re.split(r"^user(d+).*$", x['Username'])[1]) if len(re.split(r"^user(d+).*$", x['Username'])) > 1 else 0)

凌乱但可以使用