假设我有一个阈值列表,对应的类如下:

classes = [{1, "1"},
           {2, "4"},
           {3, "7"},
           {4, "8"},
           {5, "9"}]

我想通过根据它的元素定义 case 来在查询中使用这个列表. 这是我的疑问:

query = select([
            subquery.c.id,
            case([(subquery.c.some_value <= x, y) for x, y in classes
            ]).label("incidence_class")
        ])

这可以很好地工作,但我有一些边缘 case ,我想通过使用Else case 来捕获它们. 因此,我基本上想要动态创建的是:

query = select([
            subquery.c.id,
            case((subquery.c.some_value <= 1, "1"),
            case((subquery.c.some_value <= 2, "4"),
            case((subquery.c.some_value <= 3, "7"),
            case((subquery.c.some_value <= 4, "8"),
            case((subquery.c.some_value <= 5, "9"),
            else_=10
            ).label("incidence_class")
        ])

我想要添加到列表中的行是"Else_=10".我不能只把它添加到我用列表理解创建的列表中,因为它是代码,对吗?

先谢谢你.

推荐答案

case()可以构造为一系列(未打包的)元组,末尾为else_:

query = select([
            subquery.c.id,
            case(*[(subquery.c.some_value <= x, y) for x, y in classes], 
            else_=10).label("incidence_class")
        ])

Python相关问答推荐

aiohTTP与pytest的奇怪行为

如何从维基百科的摘要部分/链接列表中抓取链接?

如何从. text中进行pip安装跳过无法访问的库

如何计算部分聚合数据的统计数据

使文本输入中的文本与标签中的文本相同

通过交换 node 对链接列表进行 Select 排序

用gekko解决的ADE方程系统突然不再工作,错误消息异常:@错误:模型文件未找到.& &

Python中MongoDB的BSON时间戳

我从带有langchain的mongoDB中的vector serch获得一个空数组

当使用keras.utils.Image_dataset_from_directory仅加载测试数据集时,结果不同

对于一个给定的数字,找出一个整数的最小和最大可能的和

通过Selenium从页面获取所有H2元素

删除所有列值,但判断是否存在任何二元组

numpy卷积与有效

将9个3x3矩阵按特定顺序排列成9x9矩阵

不允许访问非IPM文件夹

在Python中使用if else或使用regex将二进制数据如111转换为001""

在单次扫描中创建列表

如何创建引用列表并分配值的Systemrame列

基于另一列的GROUP-BY聚合将列添加到Polars LazyFrame