我有一个字典,它有许多不同的会话,在不同的日期开始和结束。每个会话桶有多个结果,每个结果有一个时间戳。
每一个结果都可以是错误的或者不是的。
我希望收集所有会话的数据以回答以下问题:在会话结束或开始时更经常发生错误。
这是那本字典的一小部分
"aggregations": {
"Sessioncount": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "1dec8193-1bf8-4ba1-ade0-332a53ca01e8",
"doc_count": 116,
"SessionTimestamps": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": [
"None",
"2022-11-09T12:29:18.489Z"
],
"key_as_string": "None|2022-11-09T12:29:18.489Z",
"doc_count": 1
},
{
"key": [
"None",
"2022-11-09T12:29:18.618Z"
],
"key_as_string": "None|2022-11-09T12:29:18.618Z",
"doc_count": 1
这个会话有很多条目,我们在这里看到的两个没有返回错误代码。还有大约50个会话。
任何提示或帮助是受欢迎的。
我的主要问题是,我真的想不出一种通过dict循环并为每个会话获取数据的方法。
我正在使用Python
我可以直接到第一个“桶”,但不能再进一步。
df = pd.json_normalize(resp["aggregations"]
["Sessioncount"]["buckets"])
如果我试着这样更进一步:
df = pd.json_normalize(resp["aggregations"]
["Sessioncount"]["buckets"]["SessionTimestamps"])
出现错误:列表索引必须是整数或切片,而不是字符串
您如何回答以下问题:错误主要出现在会话的前半部分还是每个会话的后半部分?
1条答案
按热度按时间jgwigjjp1#
对象“聚合”中的目标“存储桶”不是字典,而是列表。
您问题的正确答案
为什么会出现此问题?
"aggregations": {}
是字典,"Sessioncount": {}
也是字典。您可以使用.get('child')
函数或传统的['child']
选择器来浏览这些字典:例如:
在字典中导航时,您偶然发现了
"buckets": [{}]
,它是一个列表,其中包含字典数据作为子项。下面是一个列表迭代的示例:
我们想访问字典
"SessionTimestamps": {}
,它位于"buckets": [{ "SessionTimestamps": {} }]
list的第一个字典中,问题是你必须使用“indices”来访问list的子字典。因此,错误为
"TypeError: list indices must be integers or slices, not str"
要了解更多信息,您可以访问geeksforgeeks,获得有关difference between List and Dictionary in Python的简洁教程
我希望这对你有帮助:)