enumerate() 函数的应用
enumerate = 枚举 = 一一列举
使用方式:
enumerate(sequence, [start=0])
输入是:一个可循环序列sequence
从指定的数值 start 开始计算下标
输出是:下标 和 该下标对应所在行的数据(可以是 列表,字典, 集合, 元组,等数据类型)
具体用法:
没有指定 start:
list1 = ['A','B','C','D','E']
for index, item in enumerate(list1):
print(index, item)
0 A
1 B
2 C
3 D
4 E
指定 start :
list1 = ['A','B','C','D','E']
for index, item in enumerate(list1, start=10):
print(index, item)
10 A
11 B
12 C
13 D
14 E
可以通过 json写入文件,读取文件,并通过 enumerate() 函数将文件的下标和数据读取出来。
具体展示如下:
import json
data =[
{'name':'kingsan','age':'23'},
{"name": "xiaoliu","age":"24"},
{"name":"xiaowang","age":"22"}]
with open('data.json','w') as file: # 写文件
file.write(json.dumps(data))
with open('data.json', "r") as f: # 读文件
for idx, line in enumerate(f):
# pass
print(idx)
print(line)
print(type(line))
0
[{"name": "kingsan", "age": "23"}, {"name": "xiaoliu", "age": "24"}, {"name": "xiaowang", "age": "22"}]
<class 'str'>
可以看出 line 是 str 类型的数据。
疑问?: 那么如何按照格式化进行输出呢, 即 怎么输出把上面的输出成字典格式的数据? = 如何将当下的字符串类型转换成字典?
使用 json.loads(变量名)
d = json.loads(line) # line是 str 格式,将str格式的数据通过 json.loads() 加载进来, 输出为 字典类型
import json
data = {"name":"kingsan","age":"23"}
# {"name": "xiaoliu","age":"24"},
# {"name":"xiaowang","age":"22"}]
with open('data.json','w') as file: # 写文件
file.write(json.dumps(data))
with open('data.json', "r") as f: # 读文件
for idx, line in enumerate(f):
# pass
print(idx)
print(line)
print(type(line))
d = json.loads(line)
print(d, type(d))
0
{"name": "kingsan", "age": "23"}
<class 'str'>
{'name': 'kingsan', 'age': '23'} <class 'dict'>
显然看出这里我们的 data 是最外层的变量是一个 字典类型的数据,所以才要使用json.dumps(数据,文件)
其中:
file.write(json.dumps(data)) = json.dumps(file, data)
= json.dumps(数据, 文件)