欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python 学习第四周(20201124) 字典、函数各种知识点各种应用

程序员文章站 2022-07-12 16:31:17
...

python 学习 字典、函数各种知识点各种应用

自学之前先来一个网上热门的99乘法列表练习,开动脑筋:

print('======开始学习前练习:打印九九乘法表,注意对齐=======')
for i in range(1,10):
    for j in range(1,i+1):
         print("%dX%d=%-2d"%(i,j,i*j),end=" ")
    print("")    #代表换行

for i in range(-9,0):
    for j in range(-9,i+1):
         print("(%-2d)X(%-2d)=%-2d"%(i,j,i*j),end=" ")
    print("")    #代表换行


print('======字典基础知识点,dict.get(key, default)碰到错误继续运行========')
"""
# 操作                    解释
D={}                     空字典
D={'spam': 2,'eggs': 3}  两项目字典
D={'food''ham':1,'egg’:2}} 嵌套
D=dict.fromkeys('a','b']) 其他构造技术
D=dict(zip(keyslist,valslist)) 关键字、对应的对、键列表
D= dict(name='Bob', age=42)
 D ['eggs']                以键进行索引运算
 D ['food']['ham']
 'eggs' in D             成员关系:键存在测试
 D.keys()               方法:键
 D.values()             值
 D.items()               键+值
 D.copy()                 副本
 D.get(key, default)     默认
"""
print('======字典基础知识点(续)========')
"""
 D. update(D2)  合并
 D. pop(key)   删除等
 len(D)      长度(储存的元素的数目)
 D[key] =42    新增/修改键,删除键
 del D [key]      根据键删除条目
 list(D. keys())    字典视图(Python3.0+)
 Dictionary views (Python 3.0)
D={x:x*2 for in range(10)}  字典解析(Python3.0+)
"""
D= {'spam':2,'ham':1,'eggs':3}  #字典入门{}
print(D,D['spam'],len(D))
print('ham in D is','ham' in D)
print(D.values(),D.keys(),D.items())
print(list(D.values()),list(D.keys()),list(D.items()))  #转化为列表。

print('======字典-原处修改字典========')
d= {'spam':2,'ham':1,'eggs':3}
d['ham'] = ['pear','apple','fry']
print(d)
del d['eggs']  #删除eggs
print(d)

d['brunch']='Bacon'
print(d)
print(d['spam'],d.get('spam'),d.get('test'),d.get('test',88))  #很有趣的点,注意看

d2= {'spam':2,'ham':1,'eggs':3}
d3={'text':4,'test':5}
d2.update(d3)   #增加 合并
print('d2,d3分别为:',d2,d3)

#pop a dictionary by key
d4 ={'spam': 2, 'ham': 1, 'eggs': 3, 'text': 4, 'test': 5}
print(d4.pop('ham'),d4,d4.pop('test'))

l= ['aa','bb','cc','dd','ee']
print(l.pop(),l.pop(1)) #pop()默认移除最后一个;  # pop(1) 删除特定位置的
print(l)

print('======字典-语言表========')
table = {
    'Python':'Guido van Rossum',
    'Peal':'Larry wall',
    'Tcl':'John'
}
language ='Python'
creator = table[language]
print(creator)

print('======字典-所有内容,以key为索引========')
for i in table:
    print(i,'\t',table[i])  #以关键字为索引

#注意事项:1、序列运算无效。字典上映射机制,不是序列。
        #2、对新索引赋值时会添加项
        #3、键不一定总是字符串
print('======字典-使用字典模拟灵活的列表,列表末尾外的偏移赋值时非法的,list不行,dict可以========')
# L=[]
# L[99]='spam'
# print(L[99]) #这三条指令运行就是非常错误的,已经99已超过,可以采用字典dict 提前赋值,列表list却不行。
d6 ={}
d6[99]='spam'
print(d6,d6[99])

print('======字典-适用于稀疏结构========')
matrix = {}
matrix[(2,3,4)]=88
matrix[(7,8,9)]=99
x=2
y=3
z=4
print(matrix[(x,y,z)],'\n',matrix)
# print(matrix[(2,3,6)])  #列表无定义,所以无结果

print('======字典-避免missing-key错误,if,else  try except========')
matrix = {(2, 3, 4): 88, (7, 8, 9): 99}
if (2,3,6) in matrix:
    print(matrix[(2,3,6)])
else:
    print('matrix_key is error!')

matrix = {(2, 3, 4): 88, (7, 8, 9): 99}
try:
    print(matrix[(2,3,6)])
except:
    print('matrix_key is error!')

#后续考虑循环输入,基础还不扎实,还不大会写。
matrix11 = {88:(2, 3, 4),99:(7, 8, 9),1:(5,6,7)}
i= int(input('请输出整数索引编号:'))
if i in list(matrix11.keys()):
    print(matrix11[i])
else:
    print('matrix11_%d is error!'% i)

print('======字典-字典接口1========')
# import shelve #shelve通过键来访问的python持久对象的数据库  anydbm
# file = shelve.open('filename')
# file['key']='data'
# data = file['key']
#
# import cgi
# form = cgi.FieldStorage() #对cgi.FieldStorage范围的调用会产生一个类似字典的对象。
# if 'name' in form:
#     showReply('Hello,'+form['name'.value])
print('======字典-创建子典的其他方法========')
"""
{'name':'mel','age':45} #1、适合场景:可以事先拼出整个字典

D1={}                   #2、适合场景:需要一次动态的建立字典的一个字段
D1['name'] ='mel'
D1['age'] = 45

dict([name='mel'],age=45) #3、适合场景:所需代码量少,但是要求键key必须是字符串才可以

dict([('name','mel'),('age',45)])  #4、适合场景: 需要在程序运行时把key和value逐步建成序列。
"""

print('======字典-zip函数=======')
l=list(zip(['a','b','c'],[1,2,3]))
print(l)

d8 = dict(zip(['a','b','c'],[1,2,3]))
print('d8值为:',d8)

d9 = {k:v for(k,v) in zip(['a','b','c'],[1,2,3])}
print('d9值为:',d9)

d10 ={x:x**2 for x in [1,2,3,4]}
print('d10:',d10)
d11={c:c*4 for c in 'spam'}
print('d11:',d11)

d12 = {c.lower():c+'!' for c in ['SPAM','HAM','EGGS']}
print('d12:',d12)

print('======字典-fromkeys用法=======')
d13 = dict.fromkeys(['a','b','c'],0)
d14 = {k:0 for k in ['a','b','c']}
print('d13,d14分别为:',d13,d14)

d15 = dict.fromkeys('spam')
d16 = {k:None for k in 'spam'}
print('d15,d16分别为:',d15,d16)

d17=dict(a=1,b=2,c=3)
print('d17分别为:',d17,'\n',d17.keys(),list(d17.keys()),'\n',d17.items(),list(d17.items()))
print('d18打印:',list(d17.keys())[0])  #d17.keys()[0] 错误 无法打印  list(d17.keys()[0]) 也是错误的

print('======字典-数据字典和几何,&交集  |并集 =======')
d20={'a':1,'b':2,'c':3}
print('1:',d20.keys()&d20.keys(),d20.keys(),list(d20.keys()))  #细看打印效果
print('2:',d20.keys()&{'b'},d20.keys()&{'b':1})
print('3:',d20.keys()|{'b','c','d'})

d21={'a':1}
print('4:',list(d21.items()),d21.items()|d21.keys())
print('5:',d21.items()|d21)
print('6:',d21.items()|{('c',3),('d',4)})
print('7:',dict(d21.items()|{('c',3),('d',4)}))

print('======字典-排序字典键key=======')
d22 = {'a':1,'c':3,'b':2}
print(list(d22.keys()))

ks=list(d22.keys())
ks.sort()
print(ks)

print('======字典-has_key已死,in永生=======')
d23 = {'a':1,'c':3,'b':2}
if d23.get('d')!= None:
    print(d23['d'])
else:
    print("d23字典中'd'不存在")

if d23.get('c')!= None:
    print(d23['c'])
else:
    print("d23字典中'c'不存在")

print('======列表和字典-习题=======')
#两种方式来创建内涵五个整数零的列表
l=[0]*5
print(l)

l1=[]
for i in range(5):
    l1.append(0)
print(l1)

print('======下次学习元组文件和相关其他=======')

上一篇: C++STL算法

下一篇: 【c++ STL】算法