tho*_*gnv 6 python dictionary list python-3.x
我有一个包含一些dicts的列表:
dict1 = {
'key1': 'value1',
'key2': 'value2',
}
dict2 = {
'key1': 'value3',
'key2': 'value4',
}
list = [dict1, dict2]
Run Code Online (Sandbox Code Playgroud)
我用它来检查列表中是否存在dict,例如我改为dict1
此
dict1 = {
'key1': 'something',
'key2': 'value2',
}
Run Code Online (Sandbox Code Playgroud)
现在,检查 dict1
if dict1 in list:
print('Exists')
else:
print('Not exists')
Run Code Online (Sandbox Code Playgroud)
它必须返回'Not exists'
,但事实并非如此.
注意
list
是内置函数,使用不同的名称,如my_list
它返回False
如下所示:
>>> dict1
{'key2': 'value2', 'key1': 'value1'}
>>> my_list = [dict1, dict2]
>>> dict1 in my_list
True
>>> dict1 = {
... 'key1': 'something',
... 'key2': 'value2',
... }
>>> dict1 in my_list
False
Run Code Online (Sandbox Code Playgroud)
您描述的行为是正确的,因为您dict
在将其重新分配给dict1
而不是修改现有时创建了一个新的dict
,您可以通过跟踪 的身份来看到这一点dict1
:
>>> dict1 = {
... 'key1': 'value1',
... 'key2': 'value2',
... }
>>>
>>> dict2 = {
... 'key1': 'value3',
... 'key2': 'value4',
... }
>>>
>>> list = [dict1, dict2]
>>> dict1 in list
True
>>> id(dict1)
140141510806024
>>> dict1['newkey'] = 'value' # modify the dict
>>> id(dict1)
140141510806024 # the id has not changed
>>> dict1 in list
True
>>> dict1 = {
... 'key1': 'something',
... 'key2': 'value2',
... }
>>> id(dict1)
140141510059144 # the id has changed
>>> dict1 in list
False
Run Code Online (Sandbox Code Playgroud)
注意不要使用变量名,list
因为它会影响内置的list()
.
归档时间: |
|
查看次数: |
11709 次 |
最近记录: |