零根底学Python--字典和JSON

在Python中,字典可能是运用最广泛的类型之一。因为字典特别的拜访办法,使得咱们在读取一些数据的时分,能够很便利的来运用字典对数据进行修正、刺进、删去和排序等各种操作。

而JSON是一种文本数据,能够很便利的转为可操作的字典格局。咱们知道咱们在读取文件的时分,读出来的默许都是字符串的方式,而Python的json包能够十分便利的协助咱们。

本文我依然选用一个实践的比方来阐明字典和Json文件格局。咱们运用上一篇文章中运用的数据文本,假定咱们有一个文本文件,其内容如下。咱们需求将其读取出来,然后处理为字典的格局,而且最终将字典存为一个json文件。

date,open,high,网王之紫凌惜月low,close
19991110,29.5,29.8,27.0,27.75
19991111,27.58,28.38,27.53,27.71
19991112,27.86,28.3,27.77,28.05
19991115,28.2,28.25,27.7,27.75
19991116,27.88,27.97,26对合犯.48,26.55
19991117,26.5,27.18,26.37,27.18
19991118,27.2,27.58,26.78,27.02
199送你一颗子弹91119,27.5,27.53,26.8,26.88
19991122,26.88,26.95,26.3,26.45
19991123,26.45,26.55,26.1,26.45

咱们能够看到,为了便利咱们阅览,咱们对文件的内容进行了一些删减,这样更有利于咱们进行操作。

之所以咱们看到我运用的是股票的OHLCV数据,原因是因为咱们其实能够看到我前面有一个专题是专门讲人工智能、深度学习和量化炒股的。其实这一部分也很简略,仅仅言论对人工智能和深度学习都有一些误零基础学Python--字典和JSON解。我举一个简略的比方,比方我让咱们用C言语来写一个计算器程序,咱们必定觉得太困难了,尤其是UI的部分;但假如我让咱们用Py零基础学Python--字典和JSONthon或许Java来写,咱们就觉得没那么困难了!为什么呢?咱们有了许多封装好的API能够用了,对吧。

深度学习和人工智能也是如此,咱们不只有Python这门胶水言语来协助咱们完结数据处理的部分,Tensorflow中咱们还有更高档和更好用的Keras来进行模型的规划和练习。所以其实悉数并没有咱们幻想的那么需求数学和Matlab常识。

言归正传,咱们先看看读取这个文件后,咱们怎么来将其变为一个字典的格局。咱们先选用上篇文章的办法将文本读入到一个列表。

file_path = 'ohlc易人珠v.txt'
stockList = []
stockDict = {}
with open(file_path) as f:
----stockList = f.readlines()
----stockList = [line.replace('\n', '').split(',') for line i李京实n stockList]
----stockList = list(zip(*stockList))
----print(stockList)

其运转成果咱们将后边的值省掉,只保存每一行的最前面的几个元素。

[('date', '19991110', ......'),

('open', '29.5',......),

('high', '29.8',.....),

('low', '27.0', ......),

('close', '27.75', ......)]

然后咱们将这个列表变成一个有5个Key值的字典。

----stockDict = {x[0]:x[1:] for x in stockList}
---零基础学Python--字典和JSON-print(stockDict)

咱们能够看到运转成果为:

{'date': ('19991110', '19991111',......), 
'open': ('29.5', '27.58', ......),
'high': ('29.8', '28.38', ......),
'low': ('27.0', '27.53',......),
'close': ('27.75', '27.71',......')}

这个运转成果咱们能够看到Key值是一个字符串丝袜相片,而Value是一个元组。假如咱们期望Value是列表,也很简略。只需求对上面的程序稍作修正,如下。

----stockDict = {x[0]:list(x[1:]) for x in stockList}
----print(stockDict)

然后咱们能够看到打印成果变为:

{'date': ['19991110', '19991111', ......], 
'open': ['29.5', '27.58', ......],
'high': ['29添下面.8', '28.38', ......],
'low': [充溢抛瓦'27.0', '27.53',......],
'close': ['27.75', '27.71',.....打工仔挖地窖软禁女孩.]}

这样根本契合咱们的预期了,咱们能够很便利的取得开盘、收盘等数据。那么假如咱们期望取得1999年11月10日的一切数据,咱们该怎样处理呢?很简略,咱们能够用如下代码。

idx = stockDict['date'].index('19991110')
date = stockDict['date'][idx]
o = stockDict['open'][idx]
h = stockDict['high'][idx]
l = stockDict['low'][idx]
c = stockDict['close'][idx]
print曹嘉馨([date, o, h, l, c])

上面榜首行咱们能够依据列表的值来取得索引号,然后咱们能够经过索引号来获取这个日期的其他的OHLC的值。

接下来咱们看看怎么来鸽虱运用json包,将这个文件存为json文件格局,便利咱们来读写。

wit瓶梅h open('ohlc.json', 'w') as jf:
----json.dump(stockDict, jf, indent=4)

这儿咱们创立一个文件,而且用json的办法来将其写入到文件里,indent表明缩进,咱们来看看生成的文件的内容。按例咱们省掉一些内容,便利雷子头咱们检查。

{
----"date": [
----"19991110",
----"19991111",
----....
----],
----"open": [
----"29.5",
----"27.58",
----......
----],
----"high": [
----"29.8",
----"28.38",
----......
----],
----"low": [
----"27.0",
----"27.53",
----......
----],
----"close": [
----"27.75",
----"27.71",
----......
----]
}

接下来咱们再来看看咱们怎么从Json文件中读取内容,这相对来说就更简略了。

with open('ohlc.json') as jrfh系列:
----content = json.load(jrf)
----print(content)

咱们能够发现打印成果正是咱们之前的字典的方式,毫无不同。也就是说咱们其有用这种办法来将字典存储为json文件之后,咱们能够十分便利的进行读取和处理以及写入,而不需求对数据进行额定的处理。凭借字典的操作的便利性,咱们能够很便利的来操作数据。

当然,咱们前面说了,假如运用Pandas这个数高曙光现任老婆据包,会愈加的便利。下面咱们把本片文章的悉数代码贴到下面。

import json
file_path = 'ohlcv.txt'
stockList = []
stockDict = []
with open(file_path) as f:
----stockList = f.readlines()
----stockList = [line.replac蔡雄英e('\零基础学Python--字典和JSONn', '').split(',') for line in stockList]
----stockList = list(zip(*stockList))
----stockDict = {x[0]: list(x[1:]) for x in stockList}
----print(stockDict)
----idx = stockDict['date'].index('1999零基础学Python--字典和JSON1110')
----date = stockDict['date'][i生化公园dx]
----o = stockDict['open'][idx]
----h = stockDict['high'][idx]
----l = stockDict广东数十马仔袭警['low'][idx]
----c化屋苗寨 = stockDict['close'][idx]
----print([date, o, h, l, c])
----with open('ohlc.json',零基础学Python--字典和JSON 'w') as jf:
--------json.dump(stockDict, jf, indent=4)
----wi零基础学Python--字典和JSONth open('ohlc.json') as jrf:
--------content = json.load(jrf)
--------print(content)

咱们在复制代码之后能够用编辑器的替换将“----”替换为缩进,好了,字典和Json的结合用法,咱们就介绍到这儿,咱们假如有疑问能够提出。其实关于字典,还有许多的用法,咱们没有介绍,下一篇文章我会专门来讲一下字典的一些小技巧。

点击展开全文

上一篇:

下一篇:

相关推荐