我有这个列表,它是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")
我想念什么?
答案 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')