7.5 字典生成式(了解)

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)
  1. 字典推导式+字典内置方法

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)
  1. zip()函数+k,v打印
res=zip('abcd',[1,2,3])
for k,v in res:
    print(k,v)
a 1
b 2
c 3
  1. 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}
  1. 拓展
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'>

字典生成式不建议使用

posted @ 2025-08-24 19:36  bokebanla  阅读(6)  评论(0)    收藏  举报