我正在遍历数据库,并希望将密钥“number”的变量值添加到列表x中,只有当此密钥存在时。有些文件中没有关键的“数字”。
在mongo里面我会使用$ exists,但我不知道如何在python中做到这一点。我尝试了这个,但它不起作用......
for i in database:
try:
x.append(i["number"])
except NameError:
break
这不起作用,我相信有一种更优雅的方式......
答案 0 :(得分:2)
你是否有效地写作 - try / append / except使它有点令人困惑......
x = [i['number'] for i in database if 'number' in i]
答案 1 :(得分:1)
in
运算符是测试容器中密钥存在的规范方法:
for i in database:
if "number" in i:
x.append(i["number"])
答案 2 :(得分:1)
您已接近想要的内容:不存在的密钥不会NameError
,而是KeyError
。
所以
for i in database:
try:
x.append(i["number"])
except KeyError:
continue
应该做你想做的事。
答案 3 :(得分:0)
您的实际代码接近您想要的。您只需在except子句中使用continue
而不是break
。像这样
for i in database:
try:
x.append(i["number"])
except NameError:
continue