SyntaxError dict[0] 不在列表中,但 dict[0] 在列表中有效? [关闭]

Posted

技术标签:

【中文标题】SyntaxError dict[0] 不在列表中,但 dict[0] 在列表中有效? [关闭]【英文标题】:SyntaxError dict[0] not in list, but dict[0] in list works? [closed] 【发布时间】:2019-07-15 09:10:42 【问题描述】:

首先iam使用python3.5

我必须做一些比较文件并编写特定行的东西,但现在遇到了一个问题。

我有一个标记列表,指定文件的行,就这样吧

a = ["bla", "blub"]

对于第二个文件,一个标记和相应行的字典。

b = "bla" : "1", "blub" : "2", "nope" : "3"

如果我现在这样做

for b[0] in a:
    print(b[b[0]])

我明白了

1
2

我想要它,但在另一种情况下我不想这样做

for b[0] not in a:
    print(b[b[0]])

我得到了 SyntaxError 不是的。 有人可以解释一下为什么这不起作用,也许可以找到一种方法来打印不在 a 中出现的键的所有值吗?

提前致谢!

【问题讨论】:

for 循环中,in 是关键字,而不是运算符。您不能使用not in 进行迭代。 b[0] 不能工作,因为b 没有密钥0 此外,a 中有无限不是的值; b[0] 将设置为哪些,以什么顺序设置? for b[0] not in a: 行在这里只是一个错字。你想使用if,而不是for 您也极不可能在每次迭代时更改b[0] 的值,如果b[0] 有效,就会发生这种情况。 for 循环是一种赋值语句。 【参考方案1】:

您想完全改变其他人提到的逻辑。要获取列表中不存在的字典中键的值,您可以执行以下操作:

b = "bla" : "1", "blub" : "2", "nope" : "3"
a = ["bla", "blub"]

for x in b.keys():
  if x not in a:
    print(b[x])

【讨论】:

非常感谢就像魅力一样。虽然我仍然不明白为什么没有第一个不工作。因为它有点在不到一秒钟的时间内给了我想要的输出,所以我有点想保留它,尽管我想我也会用 if in 来做,尽管它要慢得多。 我猜它把 b[0] 作为 x 只是我猜:D

以上是关于SyntaxError dict[0] 不在列表中,但 dict[0] 在列表中有效? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

SyntaxError 试图返回赋值的值

在同一循环中使用列表填充 dict

将包含列表项的 dict 展开为 dict 对列表

ValueError: 0 不在列表中

[转载] Python 列表(list)字典(dict)字符串(string)常用基本操作小结

将Dataframe转换为dict列表太慢[重复]