为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

倚天杖 2021-10-19 14:42:44
我在我的 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')
查看完整描述

3 回答

?
慕姐8265434

TA贡献1813条经验 获得超2个赞

使用 for 循环获取单个字典,然后检查键


for perm in permissions: 

    if value in perm.values():

        print('Value is inside list')


查看完整回答
反对 回复 2021-10-19
?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

我认为您可以使用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')


查看完整回答
反对 回复 2021-10-19
?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

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


查看完整回答
反对 回复 2021-10-19
  • 3 回答
  • 0 关注
  • 226 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信