我在我的 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')
阿波罗的战车
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')
江户川乱折腾
TA贡献1851条经验 获得超5个赞
正如其他答案所指出的那样。问题是您试图在列表对象上使用字典访问器。由于permissions
是字典列表,因此您需要检查列表中的所有字典以查找value4
. 这可以通过多种方式完成,在我看来,最 Pythonic 的方式是使用列表理解,例如[value4 == d for d['mykey'] in permissions]
添加回答
举报
0/150
提交
取消