首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >python数据结构建议?

python数据结构建议?
EN

Stack Overflow用户
提问于 2016-11-06 22:35:59
回答 3查看 74关注 0票数 1

我有一个复杂的定价数据,比如树结构。

示例将类似于计算机价格(监视器价格、主板价格等)在显示器类别中,我有更多的子类别,而在这些子类别下,我有更多的类别(显示器是27英寸,由戴尔生产,弯曲)。

我需要经常阅读这些定价信息(只读)像数千次。

我想用类来存储这些信息。因为我不知道我能不能在字典里这么做。有人有建议吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-11-07 00:47:22

Mongodb无疑是一种很好的可能性,但在您的示例中,只有50个条目,而只读取它可能会造成过度的后果,特别是在您需要熟悉如何执行查询时。

更快的方法很可能是通过熊猫:使用嵌套字典,最好创建一个输入JSON文件或字符串(如下面的示例所示),然后在“执行熊猫数据”中读取它。

然后,你可以用你想要的方式将它规范化,并在熊猫身上做必要的计算,这样你就能更快地学会:

这里是一个关于它的外观的例子:normalize.html

代码语言:javascript
运行
复制
>>> data = [{'state': 'Florida',
...          'shortname': 'FL',
...          'info': {
...               'governor': 'Rick Scott'
...          },
...          'counties': [{'name': 'Dade', 'population': 12345},
...                      {'name': 'Broward', 'population': 40000},
...                      {'name': 'Palm Beach', 'population': 60000}]},
...         {'state': 'Ohio',
...          'shortname': 'OH',
...          'info': {
...               'governor': 'John Kasich'
...          },
...          'counties': [{'name': 'Summit', 'population': 1234},
...                       {'name': 'Cuyahoga', 'population': 1337}]}]
>>> from pandas.io.json import json_normalize
>>> result = json_normalize(data, 'counties', ['state', 'shortname',
...                                           ['info', 'governor']])
>>> result
         name  population info.governor    state shortname
0        Dade       12345    Rick Scott  Florida        FL
1     Broward       40000    Rick Scott  Florida        FL
2  Palm Beach       60000    Rick Scott  Florida        FL
3      Summit        1234   John Kasich     Ohio        OH
4    Cuyahoga        1337   John Kasich     Ohio        OH

对于上面的数据,您可以很容易地得到短名=‘FL’的所有条目的总数之和,如下所示:

代码语言:javascript
运行
复制
sum_of_fl_population = result[result['shortname']=='FL'].population.sum()
Out[11]: 112345

看一下这个链接,了解如何处理熊猫的数据。这可能是解决你问题的最好方法。http://pandas.pydata.org/pandas-docs/stable/10min.html

票数 1
EN

Stack Overflow用户

发布于 2016-11-06 22:43:53

我认为存储这些数据的一个好方法是有一个计算机对象,它可以有成员变量,如主板、监视器等。

然后,您可以有一个包含映射到计算机对象的唯一id的单一字典。这样你就能得到类似于

代码语言:javascript
运行
复制
    computers.get('12345').getMotherBoard().getMake()
    computers.get('45678').getMonitor().getScreenResolution()
    computers.get('54342').getRam().getPrice()
票数 0
EN

Stack Overflow用户

发布于 2016-11-06 23:21:30

去找大数据。

将ElasticSearch、MongoDB、CouchDB或其他许多东西(我猜)放在堆栈中,并将每种产品作为文档存储,从而使基础变得平坦。

为每种类型的文档创建一个索引(一个用于计算机屏幕,一个用于主板,.),基本上每种共享相同属性的对象都有一个索引,您就可以开始了。

以elasticSearch为例,关于为人父母:https://www.elastic.co/guide/en/elasticsearch/guide/2.x/parent-child.html https://www.elastic.co/guide/en/elasticsearch/guide/2.x/parent-child-mapping.html

我相信这比SQL更快,而且可能更容易使用。不过,有一个缺点,没有多少框架允许您使用这样的“新”数据库。不过,对于更知名的人来说,有一些与奥姆斯有关的地图

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40455337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档