繁体   English   中英

读取字典清单时出现KeyError

[英]KeyError when reading a list of dictionary

我有以下词典列表:

  mydata = [
  {
     "created_time": "2017-07-22T19:54:03+0000",
     "message": "AAAAAAA",
     "id": "1892434161030557_1945301442410495"
  },
  {
     "created_time": "2017-07-16T12:55:37+0000",
     "message": "YYYYYYYYY",
     "id": "1892434161030557_1941921866081786"
  },
  {
     "created_time": "2017-07-16T12:43:44+0000",
     "message": "PPPPPPPPPPPPP",
     "id": "1892434161030557_1941917586082214"
  },
  {
     "created_time": "2017-05-12T05:42:58+0000",
     "message": "m",
     "id": "1892434161030557_1906744326266207"
  }
 ]

当我打印created_time时,它可以正常工作:

for x in mydata:
    print(x['created_time'])

我得到了created_timeid值的正确输出。 但是,当我尝试读取消息值时,出现KeyError:'message'

给定您的示例数据,此简单操作应该可以正常工作。 我猜该message在某些情况下不存在。

您可以更轻松地像这样调试:

for x in mydata:
    try:
        msg = x['message']
    except KeyError:
        raise ValueError('No "message" key in "%s"' % (x, ))
    print(msg)

这将为您提供没有messagex的整个实例。

如果您知道数据中所有可能的键,并且不想使用try...except则可以检查键是否存在。

另外一个变体将在所有if语句的其他部分中将键打印为EMPTY,这样您就会知道有多少数据集没有期望键的值。

mydata = [
  {
     "created_time": "2017-07-22T19:54:03+0000",
     "message": "AAAAAAA",
     "id": "1892434161030557_1945301442410495"
  },
  {
     "message": "YYYYYYYYY",
     "id": "1892434161030557_1941921866081786"
  },
  {
     "created_time": "2017-07-16T12:43:44+0000",
     "message": "PPPPPPPPPPPPP",
     "id": "1892434161030557_1941917586082214"
  },
  {
     "created_time": "2017-05-12T05:42:58+0000",
     "message": "m",
     "id": "1892434161030557_1906744326266207"
  }
 ]

for x in mydata:
    if ('created_time' in x):
        print("created_time : " + x['created_time'])
    if ('message' in x):
        print("message      : "+ x['message'])
    if ('id' in x):
        print("id           : " + x['id'])
    print("\n")

样品运行

created_time : 2017-07-22T19:54:03+0000
message      : AAAAAAA
id           : 1892434161030557_1945301442410495


message      : YYYYYYYYY
id           : 1892434161030557_1941921866081786


created_time : 2017-07-16T12:43:44+0000
message      : PPPPPPPPPPPPP
id           : 1892434161030557_1941917586082214


created_time : 2017-05-12T05:42:58+0000
message      : m
id           : 1892434161030557_1906744326266207

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM