无法检查值是否在列表中

时间:2019-08-01 22:32:04

标签: python list

我有这个列表,它是rs = cur.fetchall的返回值,我无法确定其中是否包含'type'值。

rs=[('objectid', 'integer'), ('nameshort', 'character varying'), ('urbanprojectyear', 'character varying'), ('urbanprojectname', 'character varying'), ('notes', 'character varying'), ('scalerank', 'smallint'), ('stylename', 'character varying'), ('firstyear', 'smallint'), ('lastyear', 'smallint'), ('type', 'character varying'), ('name', 'character varying'), ('globalid', 'character varying'), ('created_user', 'character varying'), ('created_date', 'timestamp without time zone'), ('last_edited_user', 'character varying'), ('last_edited_date', 'timestamp without time zone'), ('sde_state_id', 'bigint'), ('shape', 'USER-DEFINED')]

我已经尝试了这种方法以及其他几种方法。但是它总是转到if语句的else。

if 'type' in rs:
    print("True")
else: print("False")

我想念什么?

3 个答案:

答案 0 :(得分:5)

您所缺少的是'type'不在rs中。但是,('type', 'character varying')是。

如果您要检查列表中是否以'type'开头的元组,则可以使用:

print('type' in [x for x, _ in rs])

还有其他更有效但更麻烦的方法来解决问题,但是您明白了。

在您的情况下,列表实际上似乎是某种表示形式的代表,它可以作为dict更好。因此,这可能是最适合您的情况:

dict_rs = dict(rs)
print('type' in dict_rs)

答案 1 :(得分:1)

rs是一个元组列表,'type'是一个字符串。元组从不等于字符串。

# check if 'type' is equal to the first value of any tuple
if 'type' in [t[0] for t in rs]:
    print("True")
else:
    print("False")

答案 2 :(得分:1)

这是无效的,因为rs是嵌套的。

一个适合初学者的方法是使用循环。您还将获得创造力,并与列表理解力一一对应,但我将留给您。

found = False
for item in rs:
    if 'type' in item:
        found = True

if found:
    print('True')
else:
    print('False')