0

我正在遍历数据库并希望将键“number”的变量值添加到列表 x 中,前提是该键存在。有些文件没有关键的“数字”。

在 mongo 里面我会使用 $exist,但我不知道如何在 python 中做到这一点。我试过这个,但它不起作用......

for i in database:
    try:
        x.append(i["number"])
    except NameError:
        break

这不起作用,我相信还有更优雅的方式......

4

4 回答 4

2

你在有效地写作吗? try/append/except 让它有点混乱......

x = [i['number'] for i in database if 'number' in i]
于 2012-11-22T11:10:51.903 回答
1

in运算符是测试容器中键是否存在的规范方法:

for i in database:
    if "number" in i:
        x.append(i["number"])
于 2012-11-22T10:57:06.303 回答
1

你接近你想要的:一个不存在的键给出 no NameError,但是一个KeyError.

所以

for i in database:
    try:
        x.append(i["number"])
    except KeyError:
        continue

应该做你想做的。

于 2012-11-22T11:10:33.260 回答
0

您的实际代码接近您想要的。您只需在 except 子句中使用continue而不是。break像这样

for i in database:
    try:
        x.append(i["number"])
    except NameError:
        continue
于 2012-11-22T11:05:42.203 回答