7.5 字典生成式
7.5.1 字典生成式
#列表推导式
lis=[i for i in range (10)]
print(lis)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
#类似于列表推导式,字典生成式如下
dic={i:i**2 for i in range(10)}
print(dic)
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}
#类似于
dict2=dict.fromkeys([1,2,3,4],2) #以列表元素为key,2为值
print(dict2)
{1: 2, 2: 2, 3: 2, 4: 2}
7.5.2 拉链函数zip()
#拉链函数,
# zip(可迭代对象)
print(zip('abcd')) #打印出的是地址# 一一对应,键值对
res=zip('abcd',[1,2,3])
for i in res:print(i)
<zip object at 0x000002788C578200>
('a', 1)
('b', 2)
('c', 3)
- 字典推导式+字典内置方法
dic={i:i**2 for i in range(10)}
for i in dic.items(): print(i)
(0, 0)
(1, 1)
(2, 4)
(3, 9)
(4, 16)
(5, 25)
(6, 36)
(7, 49)
(8, 64)
(9, 81)
- zip()函数+k,v打印
res=zip('abcd',[1,2,3])
for k,v in res:print(k,v)
a 1
b 2
c 3
- zip函数+字典生成式
res=zip('abcd',[1,2,3])
dic={k:v for k,v in res}
print(dic)#字典生成式配上zip可以快速将两个列表生成一个字典
dic={k:v for k,v in zip('abcd',[1,2,3])} #快速生成一个字典
{'a': 1, 'b': 2, 'c': 3}
- 拓展
res=zip('abc',[1,2,3],[4,5,6]) #三个以上变元组
for i in res:print(i)
print(type(res))
('a', 1, 4)
('b', 2, 5)
('c', 3, 6)
<class 'zip'>