我在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')
答案 0 :(得分:2)
使用for循环获取单个字典,然后检查键
for perm in permissions:
if value in perm.values():
print('Value is inside list')
答案 1 :(得分:2)
我认为您可以使用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')
答案 2 :(得分:0)
value_to_check = some_value permissions = request.session['permissions'] for perm in permissions: for key in perm: if perm[key] == value_to_check: print "Value is present"
答案 3 :(得分:0)
其他答案指出。问题是您试图在列表对象上使用字典访问器。由于permissions
是词典列表,因此您需要检查列表中的所有value4
词典。这可以通过多种方式完成,在我看来,最Python化的方式是使用列表理解,例如[value4 == d for d['mykey'] in permissions]