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

时间:2019-01-24 07:11:28

标签: python list dictionary

我在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')

4 个答案:

答案 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]