【问题标题】:Python DBM KeyErrorPython DBM 密钥错误
【发布时间】:2017-10-24 17:21:22
【问题描述】:

当我在 for 中找到 a 键值时如何打印“ok”

>>> 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'"

在这里我可以打印键值和键中包含的数据,但我只想在包含的键值中搜索一个单词。

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

>>> 0 1
>>> 1 2
>>> 2 3 

【问题讨论】:

    标签: python keyerror dbm


    【解决方案1】:

    如果您想检查特定值是否存在,只需遍历键:

    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
    

    检查一个键是否退出:

    if db.has_key('name'): print 'ok'
    ok
    

    【讨论】:

      猜你喜欢
      • 2013-08-04
      • 2016-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-17
      相关资源
      最近更新 更多