目录:
3.1 字典
3.1.1 字典增加
3.1.2 查询
3.1.3 修改
3.1.4 删除
3.1.5 fromkeys
3.1.6 排序
3.1.7 遍历
3.2 字符串内置方法
3.3 蹩脚的三级菜单脚本
3.1 字典
字典: 键值对数据类型
字典必须是不可修改的类型,字典,元组 都不可以做为键
字典两大特点: 无序,键唯一
a=[1,2,3]
a=list((1,2,3))
dict() 跟list创建方法是一样的
dic1=[]
dic2=dict() 方法必须带括号 dic2=dict((("name","xiong"),("age",33),))
3.1.1 字典增加
dic1={"name":"xiong"}
dic["age"]=222
# 键存在,不改动,返回字典中相应的键的对应值
dic1.setdefault("hobby","NNN")
# 键不存在,在字典中增加新的键值对,并返回相应值
3.1.2 查询
dic1 = {"name":"xiong", "age":33,}
print(dic["age"])
# 将所有的键都取出做为一个列表, 类型为dict_keys
dic1.keys() 结果:dict_keys([‘name‘, ‘age‘, ‘1‘])
# 将字典中所有的值都出来
dic1.values() 结果: dict_values([‘xiong‘, 33, ‘test1‘])
# 将字典的键值对都取出来
dic1.items() 结果:dict_items([(‘name‘, ‘xiong‘), (‘age‘, 33), (‘1‘, ‘test1‘)])
xx = list((dic1.keys()))
print(type(xx)) <class ‘list‘>
3.1.3 修改
dic = {"name":"xiong", "age":33,}
dic["age"]=34
dic2 = {‘1‘:‘111‘,‘2‘:‘222‘}
dic.update(dic2) # 跟列表中extend功能一样
结果为 {"name":"xiong", "age":33, ‘1‘:‘111‘, ‘2‘:‘222‘}
3.1.4 删除
del dic1["name"] 结果: 删除name的键值对
del dic1 结果: 删除整个字典
dic1.clear() 结果: 清空字典
dic5.pop("age") 结果: 删除字典中指定键值对,并返回该键值对的值
# 随机删除一个键值对,并以元组方式返回值
dic1.popitem()
3.1.5 fromkeys
其它操作以及涉及到的方法
dic3=dict.fromkeys(["h1","h2","h3"],"hhh")
print(dic3) 得出结果 {‘h1‘: ‘hhh‘, ‘h2‘: ‘hhh‘, ‘h3‘: ‘hhh‘}
# 将多个值赋值给多个键
dic3=dict.fromkeys(["h1","h2","h3"],["hhh","ggg"])
print(dic3) 结果:{‘h1‘: [‘hhh‘, ‘ggg‘], ‘h2‘: [‘hhh‘, ‘ggg‘], ‘h3‘: [‘hhh‘, ‘ggg‘]}
字典的嵌套
data = [
{"1",22 },
{"2",33 },
]
3.1.6 排序
# 返回一个有序的包含字典所有key的列表
print(sorted(dic3.items()))
结果: [(‘h1‘, [‘hhh‘, ‘ggg‘]), (‘h2‘, [‘hhh‘, ‘ggg‘]), (‘h3‘, [‘hhh‘, ‘ggg‘])]
3.1.7 遍历
dic1=dict((("name","xiong"),("age",33),))
for i in dic1:
print(i,dic1[i])
3.2 字符串内置方法:
b = ‘abc1‘
b.count(‘1‘) #统计元素个数 结果 1
b.capitalize() #字符串首字母大写 结果 Abc1
b.center(12,‘-‘) #字符居中并两边打印- 结果 ----abc1----
print(‘abc‘.ljust(50,‘*‘)) 向左对齐
print(‘abc‘.rjust(50,‘*‘)) 向右对齐
print(" xiong ".strip()) 去除所有空格,换行符也会自动取消 很重要的方法
print( ‘xiong‘.replace(‘x‘,‘X‘,1)) 替换
#两个参数,(想更改的),(要更改成啥),如有多个字符,1表示只替换一次
b.encode #编码
b.endswith(‘1‘) #以某个字符串结尾 结果 True
b.startswith(‘1‘) #以某个字符串起始 结果 False
b.expandtabs(tabsize=#) # 用得少
b.find(‘1‘) #查找第一个元素,并将索引值返回
print(‘xiong‘.rfind(‘g‘)) #与find功能一样
print(‘xiong‘.find(‘g‘))
两个打印结果都是: 4
b.index(‘1‘) #与find功能一样,多了一个元素没有的时候会报错,find不会报错
b.format #格式化输出的另一种方式
b = ‘abc1 {name} is {age}‘
print(b.format(name=‘xiong‘,age=‘123‘))
b.format_map({‘name‘:‘xiong‘,‘age‘:‘123‘})
print(str.isalnum()) # 判断所有字符都是数字或者字母
print(str.isalpha()) # 判断所有字符都是字母
print(str.isdigit()) # 判断所有字符都是数字 必须是一个整形
print(str.islower()) # 判断所有字符都是小写
print(str.isupper()) # 判断所有字符都是大写
print(str.istitle()) # 判断所有单词都是首字母大写,像标题
print(str.isspace()) # 判断所有字符都是空白字符、\t、\n、\r
# 返回结果不是True 就是 False
print(‘Abc‘,lower()) # 大写变小写 结果abc
print(‘Abc‘,upper()) # 小写变大写 结果ABC
print(‘Abc‘,swapcase()) # 小写变大写,大写变小写 结果 aBC
print (‘My test xiong‘.split(‘ ‘)) 将字符串变为一个列表
# split(‘ ‘,1) 以什么为分隔符进行分割字符串 [‘My‘, ‘test xiong‘]
print (‘My test xiong‘.rsplit(‘ ‘)) 将字符串变为一个列表
# rsplit(‘ ‘,1) 从右往左, 只分隔一次 [‘My test‘, ‘xiong‘]
print (‘My test xiong‘.title()) 所有字符串 首字母都变成大写 My Test Xiong
join 连接方法 拼接 方法为 ‘‘.join(字符串提供的方法)
a=‘123‘
b=‘abc‘
c=‘‘.join([a,b]) #结果 123abc
c=‘****‘.join([a,b]) #结果 123****abc
3.3 蹩脚的三级菜单脚本
#!/usr/bin/env python # -*- coding:utf-8 -*- china = {"河北": {"石家庄": ("井径", "正定"), "秦皇岛": ("青龙", "昌黎"), "承德": ("平泉", "兴隆"), "邢台": ("临城", "内丘", "柏乡", "隆尧", "任县", "南和")}, "湖北": {"武汉": ("黄陂", "新洲", "武昌", "汉阳"), "十堰": ("郧县", "郧西", "竹溪", "房县"), "襄樊": ("襄阳", "南漳", "谷城", "保康"), "黄冈": ("红安", "罗田", "英山", "浠水")}, "湖南": {"长沙": ("芙蓉区", "天心区", "岳麓区", "开福区",), "株洲": ("天元区", "荷塘区", "芦淞区", "石峰区", "株洲县", "攸县,")} } property_list = list(china.keys()) for v,i in enumerate(property_list,1): print(v,i) stop = False while True: if stop is True: break property = input("1、请输入省份对应的序列号:如1,按Q退出: ") if property.isdigit(): property = int(property) if property > 0 and property <= len(property_list): property = (property_list[property - 1]) print("您输入的省份是: %s 请选择城市、列表如下: " % property) ciry_list = china[property] ciry = list(ciry_list.keys()) for v,u in enumerate(ciry,1): print(v,u) while True: if stop is True: break county = input("2、请输入县或区对应的序列号:如1,按Q退出,按A返回上一层: ") if county.isdigit(): county = int(county) if county > 0 and county <= len(ciry): county = ciry[county - 1 ] print (county) else: print("无此选项") else: if county == ‘q‘: stop = True print("退出脚本.") elif county == ‘a‘: print("回到上层,请选择省份 %s" % property_list ) break else: print("无此选项") else: if property == ‘q‘: print("退出脚本.") stop = True else: print("无此选项")
操作如下:
1 河北 2 湖北 3 湖南 1、请输入省份对应的序列号:如1,按Q退出: 1 您输入的省份是: 河北 请选择城市、列表如下: 1 石家庄 2 秦皇岛 3 承德 4 邢台 2、请输入县或区对应的序列号:如1,按Q退出,按A返回上一层: q 退出脚本.
1 河北 2 湖北 3 湖南 1、请输入省份对应的序列号:如1,按Q退出: 1 您输入的省份是: 河北 请选择城市、列表如下: 1 石家庄 2 秦皇岛 3 承德 4 邢台 2、请输入县或区对应的序列号:如1,按Q退出,按A返回上一层: 2 秦皇岛 2、请输入县或区对应的序列号:如1,按Q退出,按A返回上一层: a 回到上层,请选择省份 [‘河北‘, ‘湖北‘, ‘湖南‘] 1、请输入省份对应的序列号:如1,按Q退出: 2 您输入的省份是: 湖北 请选择城市、列表如下: 1 武汉 2 十堰 3 襄樊 4 黄冈 2、请输入县或区对应的序列号:如1,按Q退出,按A返回上一层: q 退出脚本.