1

how can i print 'ok' when i find the a key value in the for

>>> with dbm.open('data1.db','r') as user:
    user['0'] = '1'
    user['1'] = '2'
    user['2'] = '3'
    for i in user:
        if '3' in user[str(i)]:
            print('ok')


Traceback (most recent call last):
  File "<pyshell#146>", line 3, in <module>
    if '3' in user[str(i)]:
  File "C:\Users\ThomasNote\AppData\Local\Programs\Python\Python36-32\lib\dbm\dumb.py", line 148, in __getitem__
    pos, siz = self._index[key]     # may raise KeyError
KeyError: b"b'0'"

Here i can print the keyvalue and the data contained in the key, but i want just to search a word in contained keyvalues.

with dbm.open('data1.db','r') as user:
    for i in user:
        print(i.decode(), user[i].decode())

>>> 0 1
>>> 1 2
>>> 2 3 
Thomas Caio
  • 83
  • 1
  • 1
  • 11

1 Answers1

0

If you want to check if a specific value exists just iterate over the keys:

import dbm
db = dbm.open('/tmp/example', 'n')
db['key'] = 'value'
db['name'] = 'marc'
db['1'] = '3'
values = [db[key] for key in db.keys()]

print values
['3', 'value', 'marc']

if '3' in values: print 'ok'
ok

To check if a key exits:

if db.has_key('name'): print 'ok'
ok
Vidoqc
  • 16