【发布时间】:2017-09-28 16:30:58
【问题描述】:
我有一个包含一些字典的列表:
dict1 = {
'key1': 'value1',
'key2': 'value2',
}
dict2 = {
'key1': 'value3',
'key2': 'value4',
}
list = [dict1, dict2]
我正在使用它来检查 dict 是否存在于列表中,例如我将dict1 更改为此
dict1 = {
'key1': 'something',
'key2': 'value2',
}
现在,检查dict1
if dict1 in list:
print('Exists')
else:
print('Not exists')
它必须返回'Not exists',但它没有。
【问题讨论】:
-
您的示例按我的预期工作...附带说明,不要将变量命名为
list,因为它是内置函数的名称 -
不清楚您要做什么。 Python 使用由它们的类型定义的相等运算符检查列表中的每个项目与比较中的项目。如果它们是等价的,那么 in(成员资格)运算符将评估为 True,否则它将评估为 False。你声称这不是正在发生的事情。我建议您追溯您的步骤并确认您所看到的内容。
-
我的代码有问题,谢谢@Jim
-
@JimDennis OP 描述的行为是正确的,因为它们创建了一个 new
dict对象 -
@Chris_rands 实际上他声称它没有返回他所期望的(错误)。但在我的建议回溯他的步骤后,他得到了它。实际上,这些字典的 id() 值并不重要。列表中的 in 运算符将全面检查相等性。我刚刚通过创建两个具有相同文字定义的字典对此进行了测试,它们都返回 True 以表示 in 我的列表。不同之处在于修改 dict1 将保持相等性,因为只有对它的引用存储在列表中(它们引用指向同一个对象)。
标签: python list python-3.x dictionary