三种数据结构

重构完成后做了一下三种数据结构,理解各种存储方式的优缺点.

第一种数据结构

 var two_activities = [{
            name: "first activity",
            sign_ups: [],
            bids: []
        }, {
            name: "second activity",
            sign_ups: [
                {
                    name:"仝键",
                    phone:"13600000000"
                },
                {
                    name:"于硕",
                    phone:"15600000000"
                },
                {
                    name:"吴京川",
                    phone:"13800000000"
                }
            ],
            bids: [
                {
                    name:"竞价1",
                    biddings : [
                        {
                            name: "仝键",
                            phone:"13600000000",
                            price: "12"

                        },
                        {
                            name: "于硕",
                            phone:"15600000000",
                            price: "10"
                        }
                    ]
                },
                            ]
        }];

第一种数据把所有的数据存储到一个数组里,结构清晰,取数据也方便,但是取数据的时候需要经过多个for,和if的循环嵌套比较繁琐,如果数据较少的话可以这样存取,数据量大的话不推荐 

2.第二种数据结构(哈希表)

 var two_activities = {
            "0":{
                name: "first activity",
                sign_ups:[],
                bids:[],
                biddings:{}
            },
            "1": {
                name: "second activity",
                sign_ups: [
                    {
                        name:"仝键",
                        phone:"13600000000"
                    },
                    {
                        name:"于硕",
                        phone:"15600000000"
                    },
                    {
                        name:"吴京川",
                        phone:"13800000000"
                    }
                ],
                bids:["竞价1","竞价2"],
                biddings:{
                    "竞价1":[
                        {
                            phone:"13600000000",
                            price: "12"

                        },
                        {
                            phone:"15600000000",
                            price: "10"
                        }
                    ],
        }
            }
        };

第二种数据结构采用哈希表的方式存储,所有数据存储在activities中,每个活动都分配一个对应的id.结构清晰,存取也较为方便 举个例子,检查是否报名电话重复

check_bid_phone_repeat = function (sms_json) {
    var activities = JSON.parse(localStorage.getItem("activities"));
    var apply_phone = sms_json.messages[0].phone
    var activity = activities[localStorage.current_activity_id].biddings[localStorage.current_bid]
    return( _.find(activity, function (act) {
        return act.phone == apply_phone
    }))

}

 

3.第三种数据结构

        var bids = [
            {
                name: "竞价1",
                activity_id: "1",
                biddings: []

            }

        ];
activities = [  
    {  
        id: "0",  
        name: "first activity"  
    },  
    {  
        id: "1",  
        name: "second activity"  
    }  
];  
];  
sign_ups = [  
    {  
        name: "仝键",  
        phone: "13600000000",  
        activity_id: "0"  
    },  
    {  
        name: "于硕",  
        phone: "15600000000",  
        activity_id: "0"  
    }  
]  

 第三种数据结构每个信息存储成一个数组,存储数据的时候特别方便,结构不是很清晰,取相应数据的时候需要逻辑判断,并且存数据的是个个个表之间要有联系.

三种数据结构各有利弊,就个人而言感觉第二中和第三种比较方便,用第三种的时候逻辑一定要清楚

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: pandas主要提供了以下三种数据结构: 1. Series:一维数组,类似于Python的列表或者数组,每个元素都有一个索引。 2. DataFrame:二维的表格型数据结构,每列可以有不同的数据类型(数值、字符串、布尔值等),类似于Excel或SQL表格。 3. Panel:三维的数组,可以看作是DataFrame的容器,但是DataFrame只能处理二维数据,因此Panel可以用来处理更高维度的数据。不过在实际应用,Panel的使用很少,一般使用DataFrame就足够了。 ### 回答2: pandas主要提供了三种数据结构:Series、DataFrame和Panel。 1. Series(系列)是pandas的一维数据结构,类似于带标签的数组。它由一组数据和与之关联的索引(标签)组成。Series可以由列表、数组或字典等数据类型创建。每个Series对象都有一个默认的整数索引,可以根据位置或标签进行访问和操作。 2. DataFrame(表格)是pandas的二维数据结构,类似于电子表格或数据库的表格。DataFrame由一组有序的列组成,每列可以是不同的数据类型(例如数值、字符串、布尔值等)。DataFrame具有行索引和列标签,可以按照行或列对数据进行选择、过滤、排序等操作。 3. Panel(面板)是pandas的三维数据结构,用于存储面板数据。面板数据可以被看作是DataFrame对象的容器,其每个DataFrame表示的是时间序列数据的不同面面。Panel可以用于表示多个数据集的多个DataFrame,并对这些数据进行处理、分析以及统计。然而,随着pandas版本的更新,Panel的使用越来越少,通常更倾向于使用MultiIndex实现多维索引的数据结构。 ### 回答3: pandas主要提供了三种数据结构,分别是:Series、DataFrame和Panel。 1. Series是pandas最基本的数据结构,类似于一维数组或列表,可以存储任意类型的数据。它由一组数据和与之相关的索引组成,索引可以是整数、标签等。Series具有类似于NumPy数组的功能,但带有额外的标签,可以通过标签进行数据访问和操作。 2. DataFrame是pandas常用数据结构,类似于二维表格或电子表格。它以类似于关系型数据库的形式存储数据,包含多个列和行,每列表示一个变量,每行表示一条记录。DataFrame能够处理不同类型的数据,并且可以对数据进行灵活的操作和转换,提供了各种统计分析、数据清洗和数据处理的功能。 3. Panel是pandas较少使用的数据结构,用于存储三维数据。它可以看作是多个DataFrame组成的字典。Panel包含一个item轴,表示每个DataFrame的名称,一个major轴,表示每个DataFrame的行索引,还有一个minor轴,表示每个DataFrame的列索引。Panel适用于处理需要三维数据分析的情况,但在实际应用较为少见。 总之,pandas提供了Series、DataFrame和Panel三种数据结构,使得数据的处理和分析更加方便和高效。无论是一维数据、二维表格还是三维数据,pandas都可以提供灵活而强大的工具来进行数据处理和分析。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值