Python中如何访问嵌套数据?附嵌套字典实例
如何访问Python嵌套字典中的深层数据?
嘿,刚好碰到过类似的嵌套结构(看起来像是MongoDB导出的数据对吧?),我来给你一步步讲怎么访问test_scr里的各种数据:
1. 直接定位单个深层数据
这种方式适合你明确知道数据所在层级的情况:
- 取第一个访问页面的URL:
first_page_url = test_scr["visited_pages"][0]["url"] print(first_page_url) # 输出: google.com
- 取第一个页面的第一个点击坐标:
first_click_x = test_scr["visited_pages"][0]["visited_page_clicks"][0]["x"] first_click_y = test_scr["visited_pages"][0]["visited_page_clicks"][0]["y"] print(f"第一个点击位置: ({first_click_x}, {first_click_y})") # 输出: (887, 35)
- 处理MongoDB风格的特殊字段(比如
$date时间戳、$oid文档ID):
# 转换第一个页面的访问时间戳为Python datetime对象 from datetime import datetime first_visited_timestamp = test_scr["visited_pages"][0]["visited_on"]["$date"] first_visited_time = datetime.fromtimestamp(first_visited_timestamp / 1000) print(f"第一个页面访问时间: {first_visited_time}") # 获取第二个页面的文档ID second_page_id = test_scr["visited_pages"][1]["visited_page_id"]["$oid"] print(f"第二个页面ID: {second_page_id}")
2. 遍历所有嵌套数据
如果需要批量处理所有页面或点击记录,用循环遍历最方便:
- 遍历所有页面,打印基础信息:
for idx, page in enumerate(test_scr["visited_pages"]): # 用get方法避免键缺失报错,比如第三个不完整的页面 url = page.get("url", "未知URL") total_clicks = page.get("total_clicks", 0) print(f"第{idx+1}个页面: URL={url}, 总点击数={total_clicks}")
- 遍历每个页面的所有点击记录:
for page in test_scr["visited_pages"]: page_id = page.get("visited_page_id", {}).get("$oid", "未知ID") print(f"\n--- 页面 {page_id} 的点击详情 ---") # 处理可能没有点击记录的情况 clicks = page.get("visited_page_clicks", []) if not clicks: print("无点击记录") continue for click in clicks: click_time = datetime.fromtimestamp(click["created"]["$date"] / 1000) print(f"位置: ({click['x']}, {click['y']}), 时间: {click_time}")
3. 避免KeyError的小技巧
你的第三个visited_page结构不完整,直接用[]访问会报错,推荐用dict.get()方法指定默认值:
# 获取第三个页面的总停留时间,不存在则返回0 third_page_time = test_scr["visited_pages"][2].get("total_time_spent_in_minutes", "0") print(f"第三个页面停留时间: {third_page_time} 分钟")
内容的提问来源于stack exchange,提问作者Arjun Bhasin
相关产品推荐
相关产品推荐

