字典是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
<class 'str'>
18
<class 'int'>
China
<class 'str'>
----------
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
<class 'str'>
[root@centos6 ~]#
[root@centos6 ~]# python3 xx.py
{1: 'zhuohua', 2: 'Python', 3: 16.8}
----------
请输入一个1到3之间的整数:2
Python
<class 'str'>
[root@centos6 ~]#
[root@centos6 ~]# python3 xx.py
{1: 'zhuohua', 2: 'Python', 3: 16.8}
----------
请输入一个1到3之间的整数:3
16.8
<class 'float'>
[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
<class 'str'>
80
<class 'int'>
[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的进阶(三) |