python查看数据集的结构 (用dict实现switch-case)

做机器学习的经常需要处理数据集,可能是json,mat,h5各种格式的,里面有各种标签结构。
了解数据集的结构、格式、类型,对我们处理数据是有帮助的。
写了一个有通用性的程序,
在此用来查看mscoco数据集的json注释,相同级别的数据使用了相同的缩进。

# -*- coding: utf-8 -*-
"""
Created on Tue Nov  6 22:23:17 2018

@author: BigFly
"""
import json

def process_dict(obj,level):
    print("<dict>")
    for key in obj.keys():
        print("  "*level, "\"%s\""%(key), end=":   ")
        process(obj[key],level+1)
        
def process_list(obj,level):
    print("<list>"," len=",len(obj))
    samplenum=1 # 对list,查看几个item
    for idx in range(min(samplenum,len(obj))):
        print("  "*level, "item",idx, end=":   ")
        process(obj[idx], level+1)
    if len(obj)>samplenum:
        print("  "*level, "item ...")
        
def process_str(obj,level):
    print("<str>",obj)
    
def process_num(obj,level):
    print("<num>",obj)
    
switch={type({}) :  process_dict,
        type([]) :  process_list,
        type("") :  process_str,
        type(1)  :  process_num,
        type(1.0) : process_num }

def process(obj,level=0):
    obj_typ=type(obj)
    try:
        switch[obj_typ](obj,level+1)
    except KeyError as e:
        print("ERROR: NO ", obj_typ)


path="E:\\dataset\\MSCOCO\\annotations_trainval2017\\annotations\\instances_val2017.json"
path="E:\\dataset\\MSCOCO\\annotations_trainval2017\\annotations\\instances_train2017.json"

jsonstr=open(path).readline()
print("jsonstr",type(jsonstr),len(jsonstr))
annotations=json.loads(jsonstr)

#查看annotations的结构
process(annotations) #['licenses', 'categories', 'annotations', 'info', 'images']

这里列举了对5种类型的处理,要处理其他类型,仿照加进去就是了。
python没有switch-case结构,可以用dict实现。

运行结果:

<dict>
   licenses:   <list>  len= 8
       item 0:   <dict>
           name:   <str> Attribution-NonCommercial-ShareAlike License
           id:   <num> 1
           url:   <str> http://creativecommons.org/licenses/by-nc-sa/2.0/
       item ...
   categories:   <list>  len= 80
       item 0:   <dict>
           supercategory:   <str> person
           name:   <str> person
           id:   <num> 1
       item ...
   annotations:   <list>  len= 36781
       item 0:   <dict>
           id:   <num> 1768
           bbox:   <list>  len= 4
               item 0:   <num> 473.07
               item ...
           image_id:   <num> 289343
           iscrowd:   <num> 0
           area:   <num> 702.1057499999998
           category_id:   <num> 18
           segmentation:   <list>  len= 1
               item 0:   <list>  len= 134
                   item 0:   <num> 510.66
                   item ...
       item ...
   info:   <dict>
       version:   <str> 1.0
       date_created:   <str> 2017/09/01
       description:   <str> COCO 2017 Dataset
       year:   <num> 2017
       contributor:   <str> COCO Consortium
       url:   <str> http://cocodataset.org
   images:   <list>  len= 5000
       item 0:   <dict>
           file_name:   <str> 000000397133.jpg
           id:   <num> 397133
           date_captured:   <str> 2013-11-14 17:02:52
           license:   <num> 4
           height:   <num> 427
           flickr_url:   <str> http://farm7.staticflickr.com/6116/6255196340_da26cf2c9e_z.jpg
           coco_url:   <str> http://images.cocodataset.org/val2017/000000397133.jpg
           width:   <num> 640
       item ...

可以清晰的看出,annotations是dict类型,有5个key,以及每个项分别的类型和详情。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,544评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,430评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,764评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,193评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,216评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,182评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,063评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,917评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,329评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,543评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,722评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,425评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,019评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,671评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,825评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,729评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,614评论 2 353

推荐阅读更多精彩内容

  • 最近和大宝贝相处的特别和谐,每天早上叫起来和她一起锻炼身体,打羽毛球,并且最近让她帮忙做家务或者事情的时候她也愿意...
    和艳红阅读 111评论 0 0
  • 宝宝还未出生,闺蜜们问我想要什么礼物的时候,我已经指定了两张豪华餐椅。为的就是从小培养坐好吃饭的习惯。计划如期进行...
    孖宝妈咪ManMan阅读 254评论 1 1
  • 三国时代,智者云集的年代。这个时代充满着诱惑,总让你有一种好奇心,想让你去揭开那神秘的面纱。如一绝世美女,遮挡着面...
    爱读书的陕北大叔阅读 2,195评论 78 40
  • 很荣幸欣赏聆听孙青青老师的插花课,并与朋友们一起感受插花艺术之美,这是我以前从来都没有接触过的,所以,首先要感谢冯...
    品墨悟道阅读 541评论 0 3