Board logo

标题: 字典 [打印本页]

作者: admin    时间: 2019-9-24 11:20     标题: 字典

字典是Python中唯一内建的映射类型; 键值对(key:value);字典的值(value)存储在键(key)里;字典的值、键都可以是字符串、整数、浮点数; 操作系统的版本信息: [root@centos6 ~]# cat /etc/redhat-release CentOS release 6.9 (Final) [root@centos6 ~]# [root@centos6 ~]# uname -r 2.6.32-696.el6.x86_64 Python的版本信息: [root@centos6 ~]# python3 --version Python 3.6.8 ###### 例子一: [root@centos6 ~]# cat xx.py #coding=utf-8 dict_1 = {'name': 'zhuohua', 'age': 18, 'address': 'China'} #字典 print('个人详细信息:',dict_1) d = len(dict_1) print(f"这个字典有{d}个键值对,键值对之间用逗号隔开") print("-" * 10) print(dict_1['name']) print(type(dict_1['name'])) print(dict_1['age']) print(type(dict_1['age'])) print(dict_1['address']) print(type(dict_1['address'])) print("-" * 10) a = f"{dict_1['name']}今年{dict_1['age']}岁,住在{dict_1['address']}。" print(a) 脚本运行的结果: [root@centos6 ~]# python3 xx.py 个人详细信息: {'name': 'zhuohua', 'age': 18, 'address': 'China'} 这个字典有3个键值对,键值对之间用逗号隔开 ---------- zhuohua 18 China ---------- zhuohua今年18岁,住在China。 [root@centos6 ~]# ###### 例子二: [root@centos6 ~]# cat xx.py #coding=utf-8 a_1 = 'zhuohua' a_2 = 98 b_1 = 'Python' b_2 = 70 c_1 = '小明' c_2 = 60 dict_1 = {a_1: a_2, b_1: b_2, c_1: c_2} #字典 print(dict_1) print("-" * 10) print("以下是成绩大于或等于70的用户:") if dict_1[a_1] >= 70: print(a_1) if dict_1[b_1] >= 70: print(b_1) if dict_1[c_1] >= 70: print(c_1) 脚本运行的结果: [root@centos6 ~]# python3 xx.py {'zhuohua': 98, 'Python': 70, '小明': 60} ---------- 以下是成绩大于或等于70的用户: zhuohua Python [root@centos6 ~]# ###### 例子三: [root@centos6 ~]# cat xx.py #coding=utf-8 list_1 = ['zhuohua','Python','小明'] #列表 list_2 = [98,70,60] dict_1 = dict(zip(list_1,list_2)) #使用dict()函数,把两个列表做成一个字典 print(dict_1) print("-" * 10) print("以下是成绩大于或等于70的用户:") fields_1 = dict_1 K_1 = 70 #关键字 for Key_1 in fields_1: if K_1 > fields_1[Key_1]: continue #跳过当前这次for循环,继续下一轮for循环 print(Key_1) #print(fields_1[Key_1]) 脚本运行的结果: [root@centos6 ~]# python3 xx.py {'zhuohua': 98, 'Python': 70, '小明': 60} ---------- 以下是成绩大于或等于70的用户: zhuohua Python [root@centos6 ~]# ###### 例子四: [root@centos6 ~]# cat xx.py #coding=utf-8 tuple_1 = (1,2,3) #元组 tuple_2 = ('zhuohua','Python',16.8) #元组 dict_1 = dict(zip(tuple_1,tuple_2)) #使用dict()函数,把两个元组做成一个字典 print(dict_1) print("-" * 10) Key_1 = input("请输入一个1到3之间的整数:") if int(Key_1) == 1: print(dict_1[1]) print(type(dict_1[1])) elif int(Key_1) == 2: print(dict_1[2]) print(type(dict_1[2])) elif int(Key_1) == 3: print(dict_1[3]) print(type(dict_1[3])) else: print('请输入正确数字') 多次运行脚本的结果: [root@centos6 ~]# python3 xx.py {1: 'zhuohua', 2: 'Python', 3: 16.8} ---------- 请输入一个1到3之间的整数:1 zhuohua [root@centos6 ~]# [root@centos6 ~]# python3 xx.py {1: 'zhuohua', 2: 'Python', 3: 16.8} ---------- 请输入一个1到3之间的整数:2 Python [root@centos6 ~]# [root@centos6 ~]# python3 xx.py {1: 'zhuohua', 2: 'Python', 3: 16.8} ---------- 请输入一个1到3之间的整数:3 16.8 [root@centos6 ~]# [root@centos6 ~]# python3 xx.py {1: 'zhuohua', 2: 'Python', 3: 16.8} ---------- 请输入一个1到3之间的整数:4 请输入正确数字 [root@centos6 ~]# ###### 例子五: [root@centos6 ~]# cat xx.py #coding=utf-8 def func1(): num = 16 / 8 return num def func2(): num = 16 / 2 return num def func3(): num = 16 / 4 return num if __name__ == '__main__': dict_1 = {'A区':func1(),'B区':func2(),'C区':func3()} #此时所有函数都已经依次执行过了 print('A区的结果为',dict_1['A区']) print('B区的结果为',dict_1['B区']) print('C区的结果为',dict_1['C区']) 脚本运行的结果: [root@centos6 ~]# python3 xx.py A区的结果为 2.0 B区的结果为 8.0 C区的结果为 4.0 [root@centos6 ~]# ############ ############ 测试所使用的文件: [root@centos6 ~]# cat /root/1.log 文件系统 容量 已用 可用 已用% 挂载点 devtmpfs 883M 0 883M 0% /dev tmpfs 901M 0 901M 0% /dev/shm tmpfs 901M 33M 868M 4% /run tmpfs 901M 0 901M 0% /sys/fs/cgroup /dev/mapper/cl-root 76G 3.5G 73G 5% / /dev/nvme0n1p1 190M 141M 36M 80% /boot tmpfs 181M 0 181M 0% /run/user/0 /dev/sr0 7.7G 7.7G 0 100% /mnt/cdrom [root@centos6 ~]# ### 例子六: [root@centos6 ~]# cat xx.py #coding=utf-8 Path_1 = "/root/1.log" f_name = open(Path_1,'r') #读取文件内容 list_1 = f_name.readlines() #输出结果为列表,连换行符也会显示出来 f_name.close() list_2 = ['A区','B区','C区','D区','E区','F区','G区','H区','I区'] dict_1 = dict(zip(list_2,list_1)) #使用dict()函数,把两个列表做成一个字典 print(dict_1) print("-" * 10) fields_1 = dict_1 K_1 = "/dev/nvme0n1p1" #关键字,区分英文字母大小写 for Key_1 in fields_1: if fields_1[Key_1].startswith(K_1): #判断数据是不是以关键字开头 pass break #只是结束整个for循环,不是结束程序 print(Key_1) print(f"{Key_1}是以关键字'/dev/nvme0n1p1'开头") Key_2 = fields_1[Key_1].split()[4] #以空格为分隔符进行分割后,再输出第5项 print(f"{Key_1}的使用率为{Key_2}") print("-" * 10) Key_3 = Key_2[:-1] #去掉最后1个字符 print(Key_3) print(type(Key_3)) Key_4 = int(Key_3) #转换为整数 print(Key_4) print(type(Key_4)) 脚本运行的结果: [root@centos6 ~]# python3 xx.py {'A区': '文件系统 容量 已用 可用 已用% 挂载点\n', 'B区': 'devtmpfs 883M 0 883M 0% /dev\n', 'C区': 'tmpfs 901M 0 901M 0% /dev/shm\n', 'D区': 'tmpfs 901M 33M 868M 4% /run\n', 'E区': 'tmpfs 901M 0 901M 0% /sys/fs/cgroup\n', 'F区': '/dev/mapper/cl-root 76G 3.5G 73G 5% /\n', 'G区': '/dev/nvme0n1p1 190M 141M 36M 80% /boot\n', 'H区': 'tmpfs 181M 0 181M 0% /run/user/0\n', 'I区': '/dev/sr0 7.7G 7.7G 0 100% /mnt/cdrom\n'} ---------- G区 G区是以关键字'/dev/nvme0n1p1'开头 G区的使用率为80% ---------- 80 80 [root@centos6 ~]# ###### 例子七: [root@centos6 ~]# cat xx.py #coding=utf-8 Path_1 = "/root/1.log" f_name = open(Path_1,'r') #读取文件内容 list_1 = f_name.readlines() #输出结果为列表,连换行符也会显示出来 f_name.close() list_2 = ['A区','B区','C区','D区','E区','F区','G区','H区','I区'] dict_1 = dict(zip(list_2,list_1)) fields_1 = dict_1 K_1 = "/dev/nvme0n1p1" #关键字,区分英文字母大小写 K_2 = "文件系统" #关键字 print(f"只显示是以关键字'{K_1}'或'{K_2}'开头的自定义区名:") for Key_1 in fields_1: if not fields_1[Key_1].startswith(K_1) and not fields_1[Key_1].startswith(K_2): continue #跳过当前这次for循环,继续下一轮for循环 print(Key_1) #print(fields_1[Key_1]) 脚本运行的结果: [root@centos6 ~]# python3 xx.py 只显示是以关键字'/dev/nvme0n1p1'或'文件系统'开头的自定义区名: A区 G区 [root@centos6 ~]# ###### 例子八: [root@centos6 ~]# cat xx.py #coding=utf-8 Path_1 = "/root/1.log" f_name = open(Path_1,'r') #读取文件内容 list_1 = f_name.readlines() #输出结果为列表,连换行符也会显示出来 f_name.close() list_2 = ['A区','B区','C区','D区','E区','F区','G区','H区','I区'] dict_1 = dict(zip(list_2,list_1)) fields_1 = dict_1 K_1 = "/dev/nvme0n1p1" #关键字,区分英文字母大小写 K_2 = "文件系统" #关键字 print(f"只显示不是以关键字'{K_1}'、'{K_2}'开头的自定义区名:") for Key_1 in fields_1: if fields_1[Key_1].startswith(K_1) or fields_1[Key_1].startswith(K_2): continue print(Key_1) 脚本运行的结果: [root@centos6 ~]# python3 xx.py 只显示不是以关键字'/dev/nvme0n1p1'、'文件系统'开头的自定义区名: B区 C区 D区 E区 F区 H区 I区 [root@centos6 ~]# ###### 例子九: [root@centos6 ~]# cat xx.py #coding=utf-8 Path_1 = "/root/a.log" f_name = open(Path_1,'r') #读取文件内容 Result_1 = f_name.read() #直接输出文件的全部内容 f_name.close() Path_2 = "/root/b.log" f_name = open(Path_2,'r') Result_2 = f_name.read() f_name.close() Path_3 = "/root/c.log" f_name = open(Path_3,'r') Result_3 = f_name.read() f_name.close() fields_1 = {Path_1: Result_1,Path_2:Result_2, Path_3: Result_3} K_1 = 'Error' #关键字,区分英文字母大小写 K_2 = 'False' #关键字 print(f"只显示内容包含关键字'{K_1}'或'{K_2}'的文件名:") for Key_1 in fields_1: if not K_1 in fields_1[Key_1] and not K_2 in fields_1[Key_1]: continue print(Key_1) 脚本运行的结果: [root@centos6 ~]# python3 xx.py 只显示内容包含关键字'Error'或'False'的文件名: /root/a.log /root/c.log ###### 例子十: [root@centos6 ~]# cat xx.py #coding=utf-8 Path_1 = "/root/a.log" f_name = open(Path_1,'r') #读取文件内容 Result_1 = f_name.read() #直接输出文件的全部内容 f_name.close() Path_2 = "/root/b.log" f_name = open(Path_2,'r') Result_2 = f_name.read() f_name.close() Path_3 = "/root/c.log" f_name = open(Path_3,'r') Result_3 = f_name.read() f_name.close() fields_1 = {Path_1: Result_1,Path_2:Result_2, Path_3: Result_3} K_1 = 'Error' #关键字,区分英文字母大小写 K_2 = 'False' #关键字 print(f"只显示内容不包含关键字'{K_1}'、'{K_2}'的文件名:") for Key_1 in fields_1: if K_1 in fields_1[Key_1] or K_2 in fields_1[Key_1]: continue print(Key_1) 脚本运行的结果: [root@centos6 ~]# python3 xx.py 只显示内容不包含关键字'Error'、'False'的文件名: /root/b.log [root@centos6 ~]# 相关文章: if语句 for循环语句 while循环语句 CentOS8使用Python3脚本管理MSSQL2008R2 join()函数 自定义函数 字符串的截取 文件操作(创建、读取、写入、追加) Python3检测文件内容中是否包含关键字 Pandas的进阶(三)




欢迎光临 blog.zhuohua.store (http://blog.zhuohua.store/) Powered by Discuz! 7.2