字典和字符串
字符串转字典:str1 = "{'key':1,'value':2}"eval()
01 内置函数eval() 实现str 和list tuple dict相互转化
# eval() 内置函数 str 和 list tuple dict相互转化 data = "{'key1':'a','key2':2}" str2dict = eval(data) print("str2dict: ",str2dict) # {'key1': 'a', 'key2': 2} print("str2dict数据类型是: ",type(str2dict)) # <class 'dict'>
02 json.dumps()和json.loads()对简单的数据类型进行编解码
json编码中:python原始类型到json类型的转化对照表
# json.dumps() dict编码为json dictD = {'key1': 'a', 'key2': 2} --》{"key1": "a", "key2": 2} dict2json = json.dumps(dictD) print("dict2json: ",dict2json) # {"key1": "a", "key2": 2} print("dict2json数据类型是: ",type(dict2json)) # <class 'str'>
json解码中:json类型到python原始类型转化对照表
data2 = '{"key1":"c","key2":4}'# 里边只能是双引号,单引号会报错,如'{'a':1}' json2dict = json.loads(data2) print("json2dict: ",json2dict) print("json2dict数据类型是: ",type(json2dict)) str='{'a':1}' 想转化成json格式,需要先转成dict '{'a':1}'--》{'a':1}-->{"a":1} {'a':1} = eval('{'a':1}') {"a":1} = json.dumps({'a':1})
列表的索引 取头不取尾
lst = ['a','b',1,0]
lst.append('c') ['a','b',1,0.'c']
lst.pop(0) ['b',1,0,'c']
lst[0]-->a; lst[1:3]---> b ,1 ; lst[:3] ---> a,b,1; lst[1:] --> b, 1, 0; lst[:] ---> a,b,1,0
lst[-1]-->0; lst[-3:-1] --->b,1 ; lst[:-1] --> a,b,1 ; lst[-2:] ---> 1,0
lst[1:-1]-->b, lst[-4:2]---> a,b
列表遍历
# 普通迭代 for i in lst: print(i) # 带索引的迭代 for index,value in enumerate(lst): print("index: ",index,"value: ",value) # 拓展场景(1)多列表迭代 # 01 循环嵌套 缺点:代码复杂度高 xl,yl,zl = ['a'],['b'],['c'] for x in xl: for y in yl: for z in zl: print(z) print(y) print(x) # 02 intertools 标准库 缺点:不方便调试 from itertools import product for x,y,z in product(xl,yl,zl): print(x,y,z) # 拓展场景(2)交集、并集、补集 a=[2,3,4,5] b=[2,5,8] # 交集 ls1 = list(set(a).intersection(set(b))) print("交集:",ls1) # 并集 ls2 = list(set(a).union(set(b))) print("并集:",ls2) # 差集 ls3 = list(set(b).difference(set(a))) # b中有而a中没有的 ls4 = list(set(a).difference(set(b))) # a中有而b中没有的 print("以b为底,a的补集:",ls3) print("以a为底,b的补集:",ls4) 交集: [2, 5] 并集: [2, 3, 4, 5, 8] 以b为底,a的补集: [8] 以a为底,b的补集: [3, 4]
一旦创建,不可修改,但是两个元组之间可以合并
t1 = (1, 2, 3) t2 = (4, 5, 6) print(t1+t2) # (1, 2, 3, 4, 5, 6)
注:元组和列表区别
列表是动态数组,内容和长度可变
元组是静态数组,内容和长度都不可变
元组缓存于Python运行时环境,这意味着我们每次使用元组时无须访问内核去分配内存。
取值
personinfo = {'name': 'joe', 'age':'20', 'hobby':'football'} print(personinfo['name']) # joe
遍历迭代
personinfo = {'name': 'joe', 'age':'20', 'hobby':'football'} print(personinfo['name']) for k,v in personinfo.items(): print(k,v) # 结果 name joe age 20 hobby football
使用场景
https://mp.weixin.qq.com/s/vfxbNZcw6Uy4jFlI5VlmDA