如何检查字典列表中是否存在值?

我在我的 Django 应用程序中使用会话。


request.session['permissions']结构如下。每个值的键都相同。基本上它是一个字典列表


[{'mykey': 'value1'}, {'mykey': 'value2'}, {'mykey': 'value3'}, 

 {'mykey': 'value4'}, {'mykey': 'value5'}, {'mykey': 'value6'}]

permissions = request.session['permissions']

现在我想检查value4里面是否存在permissions。我不知道如何检查价值。


每当我试图访问这样的价值时


permissions.mykey

它给了我错误


'list' object has no attribute 'mykey'

我想做类似的事情


permissions = request.session['permissions']

if value not in permissions:

   print('Value is inside list')


倚天杖
浏览 227回答 3
3回答

慕姐8265434

使用 for 循环获取单个字典,然后检查键for perm in permissions:     if value in perm.values():        print('Value is inside list')

阿波罗的战车

我认为您可以使用filter这样做:permissions = request.session['permissions']exists = list(filter(lambda x: x.get('mykey') == 'value4', permissions))  # for python 3# for python2#  exists = filter(lambda x: x.get('mykey') == 'value4', permissions)if len(exists) > 0:   print('value4 exists')

江户川乱折腾

正如其他答案所指出的那样。问题是您试图在列表对象上使用字典访问器。由于permissions是字典列表,因此您需要检查列表中的所有字典以查找value4. 这可以通过多种方式完成,在我看来,最 Pythonic 的方式是使用列表理解,例如[value4 == d for d['mykey'] in permissions]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python