law*_*hit 195 python json dictionary list python-3.x
我试图传入一个JSON文件并将数据转换为字典.
到目前为止,这就是我所做的:
import json
json1_file = open('json1')
json1_str = json1_file.read()
json1_data = json.loads(json1_str)
Run Code Online (Sandbox Code Playgroud)
我期待json1_data成为一种dict类型,但实际上它list在我检查时会作为一种类型出现type(json1_data).
我错过了什么?我需要这个是字典,所以我可以访问其中一个键.
Dao*_*Wen 253
你的JSON是一个内部有一个对象的数组,所以当你读到它时,你会得到一个里面有一个字典的列表.您可以通过访问列表中的项目0来访问您的字典,如下所示:
json1_data = json.loads(json1_str)[0]
Run Code Online (Sandbox Code Playgroud)
现在,您可以按照预期访问存储在数据点中的数据:
datapoints = json1_data['datapoints']
Run Code Online (Sandbox Code Playgroud)
如果有人能咬人,我还有一个问题:我试图获取这些数据点中第一个元素的平均值(即datapoints [0] [0]).为了列出它们,我尝试做数据点[0:5] [0],但我得到的是第一个带有两个元素的数据点,而不是想要获得仅包含第一个元素的前5个数据点.有没有办法做到这一点?
datapoints[0:5][0]没有做你期望的事.datapoints[0:5]返回一个仅包含前5个元素的新列表切片,然后[0]在其末尾添加将只获取该结果列表切片中的第一个元素.您需要使用什么来获得所需的结果是列表理解:
[p[0] for p in datapoints[0:5]]
Run Code Online (Sandbox Code Playgroud)
这是计算均值的简单方法:
sum(p[0] for p in datapoints[0:5])/5. # Result is 35.8
Run Code Online (Sandbox Code Playgroud)
如果你愿意安装NumPy,那就更容易了:
import numpy
json1_file = open('json1')
json1_str = json1_file.read()
json1_data = json.loads(json1_str)[0]
datapoints = numpy.array(json1_data['datapoints'])
avg = datapoints[0:5,0].mean()
# avg is now 35.8
Run Code Online (Sandbox Code Playgroud)
使用,具有NumPy数组的切片语法的运算符具有您最初期望的列表切片的行为.
use*_*754 13
这是一个简单的片段,它json从字典中读取文本文件中的内容.请注意,您的json文件必须遵循json标准,因此必须使用"双引号而不是'单引号.
你的JSON dump.txt文件:
{"test":"1", "test2":123}
Run Code Online (Sandbox Code Playgroud)
Python脚本:
import json
with open('/your/path/to/a/dict/dump.txt') as handle:
dictdump = json.loads(handle.read())
Run Code Online (Sandbox Code Playgroud)
小智 6
您可以使用以下内容:
import json
with open('<yourFile>.json', 'r') as JSON:
json_dict = json.load(JSON)
# Now you can use it like dictionary
# For example:
print(json_dict["username"])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
461548 次 |
| 最近记录: |