Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python的JSON模块:通过字典访问抑制异常_Python_Json - Fatal编程技术网

Python的JSON模块:通过字典访问抑制异常

Python的JSON模块:通过字典访问抑制异常,python,json,Python,Json,我注意到,如果我想访问一个JSON文档中不存在的密钥,会出现一个突发异常。 这个例外的问题是,我在文档中找不到太多关于它的信息。 第二个问题是,我并没有找到进行检查的函数,无论项目是否存在。 第三件事是,在这种情况下不需要例外。返回NULL会更好。 这是一些示例代码。有人知道Suppress抛出异常或忽略异常的esay方法吗 def make_command(p): type = p['t'] # remote control is about controlling the mode

我注意到,如果我想访问一个JSON文档中不存在的密钥,会出现一个突发异常。 这个例外的问题是,我在文档中找不到太多关于它的信息。 第二个问题是,我并没有找到进行检查的函数,无论项目是否存在。 第三件事是,在这种情况下不需要例外。返回NULL会更好。 这是一些示例代码。有人知道Suppress抛出异常或忽略异常的esay方法吗

def make_command(p):
  type = p['t']

  # remote control is about controlling the model (thrust and attitude)
  if type == 'rc':
    com = "%d,%d,%d,%d" % (p['r'], p['p'], p['f'], p['y'])
    send_command("RC#", com)

  # Add a waypoint
  if type == 'uav':
    com = "%d,%d,%d,%d" % (p['lat_d'], p['lon_d'], p['alt_m'], p['flag_t'] )
    send_command("UAV#", com)

  # PID config is about to change the sensitivity of the model to changes in attitude
  if type == 'pid':
    com = "%.2f,%.2f,%.4f,%.2f;%.2f,%.2f,%.4f,%.2f;%.2f,%.2f,%.4f,%.2f;%.2f,%.2f,%.4f,%.2f;%.2f,%.2f,%.4f,%.2f;%.2f,%.2f,%.2f,%.2f,%.2f" % (
      p['p_rkp'], p['p_rki'], p['p_rkd'], p['p_rimax'],
      p['r_rkp'], p['r_rki'], p['r_rkd'], p['r_rimax'],
      p['y_rkp'], p['y_rki'], p['y_rkd'], p['y_rimax'],
      p['t_rkp'], p['t_rki'], p['t_rkd'], p['t_rimax'],
      p['a_rkp'], p['a_rki'], p['a_rkd'], p['a_rimax'],
      p['p_skp'], p['r_skp'], p['y_skp'], p['t_skp'], p['a_skp'] )
    send_command("PID#", com)

  # This section is about correcting drifts while model is flying (e.g. due to imbalances of the model)
  if type == 'cmp':
    com = "%.2f,%.2f" % (p['r'], p['p'])
    send_command("CMP#", com)

  # With this section you may start the calibration of the gyro again
  if type == 'gyr':
    com = "%d" % (p['cal'])
    send_command("GYR#", com)

  # User interactant for gyrometer calibration
  if type == 'user_interactant':
    ser_write("x")

  # Ping service for calculating the latency of the connection
  if type == 'ping':
    com = '{"t":"pong","v":%d}' % (p['v'])
    udp_write(com, udp_clients)

一旦解析了JSON文档,它就是一个Python数据结构。从那时起,所有关于如何使用python列表或字典的常规规则都适用。尝试访问字典中不存在的键将引发
键错误
,除非您使用(并可能提供除
之外的默认值):


请您重新表述您的问题,让它看起来更像一个实际的问题,而不是一个咆哮?我不确定您到底在问什么,但这可能会有所帮助:不要为问题添加答案。根据我的示例,检查每个键是否存在异常将相对昂贵且需要大量代码。有办法吗?是的,像我演示的那样使用
dct.get(key,default)
(为您的用例使用适当的默认值或sentinel值)。
>>> dct = {'foo': 42}
>>> dct['bar']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'bar'
>>>
>>> print dct.get('bar')
None
>>> print dct.get('bar', 'NOTFOUND')
'NOTFOUND'
>>> 'foo' in dct
True
>>> 'bar' in dct
False