[英]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_time和id值的正确输出。 但是,当我尝试读取消息值时,出现KeyError:'message' 。
给定您的示例数据,此简单操作应该可以正常工作。 我猜该message
在某些情况下不存在。
您可以更轻松地像这样调试:
for x in mydata:
try:
msg = x['message']
except KeyError:
raise ValueError('No "message" key in "%s"' % (x, ))
print(msg)
这将为您提供没有message
的x
的整个实例。
如果您知道数据中所有可能的键,并且不想使用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.