我正在处理一些数据,这些数据的每个记录都有不断变化的键。我从每个记录中收集了一个密钥的主列表,并将它们存储在一个列表中。然后,我想使用try catch
遍历列表以获取适当的值,但是由于列表项中的项是str
,而字典是dict
,所以我得到了一个错误
例如,请注意嵌套键的可能性。否则我的方法会简单得多:
records = [{
"id": 2017215,
"name": "foo bar"
"campaign": {
"id": 161,
"name": "Historical Data Campaign"
}
},
{
"id": 2017215,
"name": "foo bar",
"last_updated": "2018-01-01",
"campaign": {
"id": 161,
"name": "Historical Data Campaign"
}
}]
keys = [ ['id'], ['name'], ['campaign'], ['campaign']['id'], ['campaign']['name'], ['last_updated'] ]
for record in records:
for key in keys:
print (record + key) # assumption was this would generate "record['id']" but errors due to mismatched types.
我是不是让事情变得更难了?最大的问题是键可以在不同的记录之间更改,在某些情况下,数据中存在嵌套键
首先,如果您按照
代码片段中的一个问题是出现了类似
['campaign']['id']
的元素。Python假设['campaign']
部分是一个文本列表定义,然后['id']
索引该列表(但不能,因为它不是整数)一般来说,我建议研究字典的^{} 方法。你可以把上面的片段变成
这将处理任何键,但如果嵌套字典的深度超过两级,则可能需要将其重新实现为递归函数
相关问题 更多 >
编程相关推荐