Check If A Specific Key And A Value Exist In A Dictionary
Solution 1:
Use
ifkeyin d and d[key] == value:
Or (only in Python 3)
if (key, value) in d.items():
In Python 3 d.items()
returns a Dictionary view object, which supports fast membership testing. In Python 2 d.items()
returns a list, which is both slow to create and slow to to test membership. Python 2.7 is a special case where you can use d.viewitems()
and get the same thing that you get with d.items()
in Python 3.
Edit: In a comment you indicate that for performance reasons you prefer checkKeyValuePairExistence
over key in d and d[key] == value
. Below are some timings showing that checkKeyValuePairExistence
is always slower (by about 2x on my system when the key-value pair is present 16x when it is not). I also tested larger and smaller dictionaries and found little variation in the timings.
>>>import random>>>from timeit import timeit>>>defcheckKeyValuePairExistence(dic, key, value):...try:...return dic[key] == value...except KeyError:...returnFalse...>>>d = {random.randint(0, 100000):random.randint(0, 100000) for i inrange(1000)}>>>setup = 'from __main__ import k, d, v, checkKeyValuePairExistence'>>>test_try_except = 'checkKeyValuePairExistence(d, k, v)'>>>test_k_in_d_and = 'k in d and d[k] == v'>>>k, v = random.choice(d.items()) # to test if found>>>timeit(test_try_except, setup=setup)
0.1984054392365806
>>>timeit(test_k_in_d_and, setup=setup)
0.10442071140778353
>>>k = -1# test if not found>>>timeit(test_try_except, setup=setup)
1.2896073903002616
>>>timeit(test_k_in_d_and, setup=setup)
0.07827843747497809
Solution 2:
How about this function:
defcheckKeyValuePairExistence(dic, key, value):
try:
return dic[key] == value
except KeyError:
returnFalse
If you are using another type of dictionary other then the one python offers (I'm sorry, I couldnt understand from your post if you are using it or not) then let me know and i'll try to give your another solution
Solution 3:
Why not just do this:
a = {1:'a', 2:'b'}
b = (1, 'a')
print b in a.iteritems() # prints True
Post a Comment for "Check If A Specific Key And A Value Exist In A Dictionary"