python 运维自动化之路 Day2

学习内容:

1、模块初识

2、Pyc是什么

3、Python数据类型

4、数据运算

5、bytes数据类型

6、列表和元组的使用

7、字符串常用操作

8、字典的使用

1、模块初识

如果用 python 解释器来编程,从 Python 解释器退出再进入,那么你定义的所有的方法和变量就都消失了。

为此 Python 提供了一个办法,把这些定义存放在文件中,为一些脚本或者交互式的解释器实例使用,这个文件被称为模块。

模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py。模块可以被别的程序引入,以使用该模块中的函数等功能。这也是使用 python 标准库的方法。

下面是一个使用 python 标准库中模块的例子。

 

import sys
print(sys.path)
print(sys.argv)
# print(sys.argv[1])
import os
os.system("dir") #调用系统命令dir,不保存结果。
print(os.popen('dir').read())  #打开总读取当前目录从内存地址中。
os.mkdir('new_quote3') #创建新目录
print(os.popen('dir').read())

 

执行结果如下:

C:\Users\hca006\AppData\Local\Programs\Python\Python36\python.exe "D:/python app/var/day2/sysmodel.py"
['D:\\python app\\var\\day2', 'D:\\python app\\var', 'C:\\Users\\hca006\\AppData\\Local\\Programs\\Python\\Python36\\python36.zip', 'C:\\Users\\hca006\\AppData\\Local\\Programs\\Python\\Python36\\DLLs', 'C:\\Users\\hca006\\AppData\\Local\\Programs\\Python\\Python36\\lib', 'C:\\Users\\hca006\\AppData\\Local\\Programs\\Python\\Python36', 'C:\\Users\\hca006\\AppData\\Local\\Programs\\Python\\Python36\\lib\\site-packages']
['D:/python app/var/day2/sysmodel.py']������ D �еľ��� ����������к��� 08BD-E367D:\python app\var\day2 ��Ŀ¼2017/04/07  20:38    <DIR>          .
2017/04/07  20:38    <DIR>          ..
2017/04/07  20:18             2,015 dictionary.py
2017/04/07  18:46             1,048 dictionary22.py
2017/03/28  08:19             1,819 list.py
2017/03/29  16:45             1,657 mycopy.py
2017/03/29  15:21               145 mydeepcopy.py
2017/04/07  20:35    <DIR>          new_quote2
2017/03/29  20:14             1,483 shop.py
2017/04/07  20:38               312 sysmodel.py
2017/03/29  19:55               535 tmall.py
2017/04/07  15:27               741 zifucuang.py
2017/03/23  19:20                19 __init__.py
2017/03/29  15:24    <DIR>          __pycache__10 ���ļ�          9,774 �ֽ�4 ��Ŀ¼ 396,468,563,968 �����ֽ�驱动器 D 中的卷是 工作卷的序列号是 08BD-E367D:\python app\var\day2 的目录2017/04/07  20:38    <DIR>          .
2017/04/07  20:38    <DIR>          ..
2017/04/07  20:18             2,015 dictionary.py
2017/04/07  18:46             1,048 dictionary22.py
2017/03/28  08:19             1,819 list.py
2017/03/29  16:45             1,657 mycopy.py
2017/03/29  15:21               145 mydeepcopy.py
2017/04/07  20:35    <DIR>          new_quote2
2017/03/29  20:14             1,483 shop.py
2017/04/07  20:38               312 sysmodel.py
2017/03/29  19:55               535 tmall.py
2017/04/07  15:27               741 zifucuang.py
2017/03/23  19:20                19 __init__.py
2017/03/29  15:24    <DIR>          __pycache__10 个文件          9,774 字节4 个目录 396,468,563,968 可用字节驱动器 D 中的卷是 工作卷的序列号是 08BD-E367D:\python app\var\day2 的目录2017/04/07  20:38    <DIR>          .
2017/04/07  20:38    <DIR>          ..
2017/04/07  20:18             2,015 dictionary.py
2017/04/07  18:46             1,048 dictionary22.py
2017/03/28  08:19             1,819 list.py
2017/03/29  16:45             1,657 mycopy.py
2017/03/29  15:21               145 mydeepcopy.py
2017/04/07  20:35    <DIR>          new_quote2
2017/04/07  20:38    <DIR>          new_quote3
2017/03/29  20:14             1,483 shop.py
2017/04/07  20:38               312 sysmodel.py
2017/03/29  19:55               535 tmall.py
2017/04/07  15:27               741 zifucuang.py
2017/03/23  19:20                19 __init__.py
2017/03/29  15:24    <DIR>          __pycache__10 个文件          9,774 字节5 个目录 396,468,563,968 可用字节Process finished with exit code 0
View Code

当解释器遇到 import 语句,如果模块在当前的搜索路径就会被导入。

搜索路径是一个解释器会先进行搜索的所有目录的列表。如想要导入模块 ,需要把命令放在脚本的顶端。

2、Pyc是什么

简述Python的运行过程

在说这个问题之前,我们先来说两个概念,PyCodeObject和pyc文件。

我们在硬盘上看到的pyc自然不必多说,而其实PyCodeObject则是Python编译器真正编译成的结果。我们先简单知道就可以了,继续向下看。

当python程序运行时,编译的结果则是保存在位于内存中的PyCodeObject中,当Python程序运行结束时,Python解释器则将PyCodeObject写回到pyc文件中。

当python程序第二次运行时,首先程序会在硬盘中寻找pyc文件,如果找到,则直接载入,否则就重复上面的过程。

所以我们应该这样来定位PyCodeObject和pyc文件,我们说pyc文件其实是PyCodeObject的一种持久化保存方式。

.Pyc文件是存储预编译后的一个字节码文件。

3、Python数据类型

1.数字

Python 数字数据类型用于存储数值。

数据类型是不允许改变的,这就意味着如果改变数字数据类型得值,将重新分配内存空间。

Python 支持三种不同的数值类型:

  • 整型(Int) - 通常被称为是整型或整数,是正或负整数,不带小数点。Python3 整型是没有限制大小的,可以当作 Long 类型使用,所以 Python3 没有 Python2 的 Long 类型。
  • 浮点型(float) - 浮点型由整数部分与小数部分组成,浮点型也可以使用科学计数法表示(2.5e2 = 2.5 x 102 = 250)
  • 复数( (complex)) - 复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型。

Python 数字类型转换

有时候,我们需要对数据内置的类型进行转换,数据类型的转换,你只需要将数据类型作为函数名即可。

  • int(x) 将x转换为一个整数。

  • float(x) 将x转换到一个浮点数。

  • complex(x) 将x转换到一个复数,实数部分为 x,虚数部分为 0。

  • complex(x, y) 将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y。x 和 y 是数字表达式。

以下实例将浮点数变量 a 转换为整数:

>>> a = 1.0
>>> int(a)
1
2.布尔值
真或假
1 或 0
3.字符串
字符串是 Python 中最常用的数据类型。我们可以使用引号('或")来创建字符串。
创建字符串很简单,只要为变量分配一个值即可。例如:
var1 = 'Hello World!'
var2 = "dnvwjy"

4、数据运算

算数运算:

比较运算:

赋值运算:

逻辑运算:

成员运算:

身份运算:

位运算:

 

运算符优先级:

计算机中能表示的最小单位,是一个二进制位

计算机中能存储的最小单位,是一个二进制位(bit)

8bit = byte(字节)

1024byte = 1Kbyte

1024Kbyte = 1Mbyte

1024Mb = 1Gb

1024Gb= 1T

5、bytes数据类型

Python 3最重要的新特性大概要算是对文本和二进制数据作了更为清晰的区分。文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示。Python 3不会以任意隐式的方式混用str和bytes,正是这使得两者的区分特别清晰。你不能拼接字符串和字节包,也无法在字节包里搜索字符串(反之亦然),也不能将字符串传入参数为字节包的函数(反之亦然)。这是件好事

不管怎样,字符串和字节包之间的界线是必然的,下面的图解非常重要,务请牢记于心:

 

字符串可以编码成字节包,而字节包可以解码成字符串。

>>>'€20'.encode('utf-8')
b'\xe2\x82\xac20'
>>> b'\xe2\x82\xac20'.decode('utf-8')
'€20'

这个问题要这么来看:字符串是文本的抽象表示。字符串由字符组成,字符则是与任何特定二进制表示无关的抽象实体。在操作字符串时,我们生活在幸福的无知之中。我们可以对字符串进行分割和分片,可以拼接和搜索字符串。我们并不关心它们内部是怎么表示的,字符串里的每个字符要用几个字节保存。只有在将字符串编码成字节包(例如,为了在信道上发送它们)或从字节包解码字符串(反向操作)时,我们才会开始关注这点。

传入encode和decode的参数是编码(或codec)。编码是一种用二进制数据表示抽象字符的方式。目前有很多种编码。上面给出的UTF-8是其中一种,下面是另一种:

>>'€20'.encode('iso-8859-15')
b'\xa420'
>>> b'\xa420'.decode('iso-8859-15')
'€20'

编码是这个转换过程中至关重要的一部分。离了编码,bytes对象b'\xa420'只是一堆比特位而已。编码赋予其含义。采用不同的编码,这堆比特位的含义就会大不同:

>>> b'\xa420'.decode('windows-1255')
'₪20'

三元运算:result = 值1 if 条件 else 值2

>>> a,b,c = 1,3,5
>>> a
1
>>> b
3
>>> c
5
>>> d = b if c>a else 7
>>> d
3
>>> d = b if c<a else 7
>>> d
7

 

 

6、元组和列表的使用

列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。

列表的数据项不需要具有相同的类型

# 列表、元组操作
names = ['胡汉','友兰','姬发','明程','国梁']
print (names[1:3])  #打印names列表的值从第2个开始至第四个结束
print(names)
print(names[-2:])   #打印最后两个,-1表示最后一个。如果写成-2:0打印为空,因为切片是从左往右切。
print (names.index('姬发'))   #打印索引下标
print (names[names.index('姬发')])  #打印索引下标的值
print (names[:1])  #前面的0可以忽略
View Code

执行结果如下:(Python 列表的下标从0开始)

['友兰', '姬发']
['胡汉', '友兰', '姬发', '明程', '国梁']
['明程', '国梁']
2
姬发
['胡汉']Process finished with exit code 0
View Code

追加、修改、插入和删除(在修改列表的时候,只能通过下标索引,不能直接写值)

names = ['胡汉','友兰','姬发','明程','国梁']
names.append(2001)  #追加,默认追加到列表最后。
print (names)
names.insert(1,2002)    #在列表内1的下标位置插入值。
print (names)
names[3]='宇亮'
print (names)
names[names.index('明程')]='江夏'   #在不知道下标的情况下修改列表内的值,在修改的时候只能用下标,#如果写成names['明程']='江夏'是错误的!
print (names)
names.remove(2002)      #移除列表内的值
print (names)
del names[5]        #删除列表内下标为5的值,凡是列表后面用[]括起,方法用()括起。
print (names)
names.pop(1)        #删除列表内下标为1的值,等同于del names[]
print (names)
names.pop()         #空值表示删除最后一个值。
print (names)
names2 = [1,2,3,5]
del names2      #删除变量
print (names.count('江夏'))       #统计数量
names.reverse()         #列表反转
print(names)
View Code

执行结果如下:

['胡汉', '友兰', '姬发', '明程', '国梁', 2001]
['胡汉', 2002, '友兰', '姬发', '明程', '国梁', 2001]
['胡汉', 2002, '友兰', '宇亮', '明程', '国梁', 2001]
['胡汉', 2002, '友兰', '宇亮', '江夏', '国梁', 2001]
['胡汉', '友兰', '宇亮', '江夏', '国梁', 2001]
['胡汉', '友兰', '宇亮', '江夏', '国梁']
['胡汉', '宇亮', '江夏', '国梁']
['胡汉', '宇亮', '江夏']
1
['江夏', '宇亮', '胡汉']Process finished with exit code 0
View Code

列表的排序和合并

a = ['abc','acb','aac','abc']
print(a)
a.sort()        #列表排序,默认升序。
print(a)
b = [4,2,5,6,1,7]
print(b)
b.sort()
print(b)
c = ['a','B','Pang','pang']
print (c)
c.sort()
print (c)
c.extend(b)     #列表合并
print (c)
View Code

执行结果如下:不同类型的数据类型不能排序。

['abc', 'acb', 'aac', 'abc']
['aac', 'abc', 'abc', 'acb']
[4, 2, 5, 6, 1, 7]
[1, 2, 4, 5, 6, 7]
['a', 'B', 'Pang', 'pang']
['B', 'Pang', 'a', 'pang']
['B', 'Pang', 'a', 'pang', 1, 2, 4, 5, 6, 7]Process finished with exit code 0
View Code

列表的copy

列表中可以包含列表,但是子列表的存在只是一个内存指针,在copy的时候只是浅copy,子列表是单独指向的一个内存地址,修改列表1列表2也会变。

浅copy:

import copylist1 = ['zhangming','huhan',[100,200]]
list2 = list1.copy()
print (list1)
print (list2)list1[2] = [50,300]         #改列表的第一层,不影响第二层的值。此时list2的第二层还是[100,200]
print (list1)
print (list2)
print (list1[:-1])      #列表切片,从第一个下标开始至最后一个下标,但不包含最后一个下标。
View Code

结果如下:

['zhangming', 'huhan', [100, 200]]
['zhangming', 'huhan', [100, 200]]
['zhangming', 'huhan', [50, 300]]
['zhangming', 'huhan', [100, 200]]
['zhangming', 'huhan']
View Code

修改子列表浅copy的列表值也会跟着改变:

import copylist1 = ['zhangming','huhan',[100,200]]
list2 = list1.copy()list1[0] = 'tiezi'  #改列表的第一层,
print (list1)       #第一层的值变了,
print (list2)       #浅copy内的值不会变。
list1[2][0] = 200    #如果修改列表1内子列表内的值,
print (list1)       #则子列表内的值会变,
print (list2)       #列表2子列表内的值也会变。因为子列表是单独存在的一个内存记录。在列表内是作为一个指针存在。
list2[2][1] = 500
print (list1)
print (list2)
View Code

如果如下:

['tiezi', 'huhan', [100, 200]]
['zhangming', 'huhan', [100, 200]]
['tiezi', 'huhan', [200, 200]]
['zhangming', 'huhan', [200, 200]]
['tiezi', 'huhan', [200, 500]]
['zhangming', 'huhan', [200, 500]]Process finished with exit code 0
View Code

深copy:

# author:dnvwjy
import copylist3 = ['wangyi','chexiao','huilong',['yutong','CRT']]
list4 = copy.deepcopy(list3)            #深copy,就是完全克隆一份一模一样的,而且是独立的占一份内存地址。
print (list3)
print (list4)
list3[3][0] = 'HM'
print (list3)
print (list4)
View Code

执行结果如下:

['wangyi', 'chexiao', 'huilong', ['yutong', 'CRT']]
['wangyi', 'chexiao', 'huilong', ['yutong', 'CRT']]
['wangyi', 'chexiao', 'huilong', ['HM', 'CRT']]
['wangyi', 'chexiao', 'huilong', ['yutong', 'CRT']]Process finished with exit code 0
View Code

列表的循环打印、切片以及步长切片:

list3 = ['wangyi','chexiao','huilong',['yutong','CRT']]for i in list3:print (i)       #列表的循环打印#列表的切片 和 步长切片
print (list3[0:-1:2])
print (list3[::2])      #0和-1都可以省略。
print (list3[:])
#浅copy的三种实现形式
list5 = copy.copy(list3)
list6 = list3[:]
list7 = list(list3)
print ('list5:',list5)
print ('list6:',list6)
print ('list7:',list7)
list3[3][0] = 1
print ('list5:',list5)
print ('list6:',list6)
print ('list7:',list7)
View Code

结果如下:

wangyi
chexiao
huilong
['yutong', 'CRT']
['wangyi', 'huilong']
['wangyi', 'huilong']
['wangyi', 'chexiao', 'huilong', ['yutong', 'CRT']]
list5: ['wangyi', 'chexiao', 'huilong', ['yutong', 'CRT']]
list6: ['wangyi', 'chexiao', 'huilong', ['yutong', 'CRT']]
list7: ['wangyi', 'chexiao', 'huilong', ['yutong', 'CRT']]
list5: ['wangyi', 'chexiao', 'huilong', [1, 'CRT']]
list6: ['wangyi', 'chexiao', 'huilong', [1, 'CRT']]
list7: ['wangyi', 'chexiao', 'huilong', [1, 'CRT']]Process finished with exit code 0
View Code

元组:

元组就是列表,但是不能删和改。元组又叫只读列表,元组用小括号()括号,只有两个参数(count/index),列表用中括号[]括起。

#元组--英文tuple,用小括号表示()
tuple=('apple','eggs')
print(tuple.count('apple'))     #统计
print(tuple.index('apple'))     #索引
del tuple       #删除元组
View Code

7、字符串常用操作

特性:不可修改,可以切片

复制代码
name.capitalize()  首字母大写
name.casefold()   大写全部变小写
name.center(50,"-")  输出 '---------------------Alex Li----------------------'
name.count('lex') 统计 lex出现次数
name.encode()  将字符串编码成bytes格式
name.endswith("Li")  判断字符串是否以 Li结尾"Alex\tLi".expandtabs(10) 输出'Alex      Li', 将\t转换成多长的空格 name.find('A')  查找A,找到返回其索引, 找不到返回-1 format :>>> msg = "my name is {}, and age is {}">>> msg.format("alex",22)'my name is alex, and age is 22'>>> msg = "my name is {1}, and age is {0}">>> msg.format("alex",22)'my name is 22, and age is alex'>>> msg = "my name is {name}, and age is {age}">>> msg.format(age=22,name="ale")'my name is ale, and age is 22'
format_map>>> msg.format_map({'name':'alex','age':22})'my name is alex, and age is 22'msg.index('a')  返回a所在字符串的索引
'9aA'.isalnum()   True'9'.isdigit() 是否整数
name.isnumeric  
name.isprintable
name.isspace
name.istitle
name.isupper"|".join(['alex','jack','rain'])
'alex|jack|rain'maketrans>>> intab = "aeiou"  #This is the string having actual characters. >>> outtab = "12345" #This is the string having corresponding mapping character>>> trantab = str.maketrans(intab, outtab)>>> >>> str = "this is string example....wow!!!">>> str.translate(trantab)'th3s 3s str3ng 2x1mpl2....w4w!!!'msg.partition('is')   输出 ('my name ', 'is', ' {name}, and age is {age}') >>> "alex li, chinese name is lijie".replace("li","LI",1)'alex LI, chinese name is lijie'msg.swapcase 大小写互换>>> msg.zfill(40)
'00000my name is {name}, and age is {age}'>>> n4.ljust(40,"-")
'Hello 2orld-----------------------------'
>>> n4.rjust(40,"-")
'-----------------------------Hello 2orld'>>> b="ddefdsdff_哈哈" 
>>> b.isidentifier() #检测一段字符串可否被当作标志符,即是否符合变量命名规则
True

补充字符串操作:

name = 'tangcao'
print(name.capitalize())
print(name.capitalize())
print('abc'.isalnum())
print('16AC'.isdecimal())
print('a16AC-'.isidentifier())
print('-'.join(['alum','fifle','firebord']))
print (name.ljust(30,'+'))
print (name.rjust(30,'+'))
print ('AAAA'.lower())
print ('aaaa'.upper())
print ('\t   \nccccc\n'.lstrip())
print ('++++\t11')s=str.maketrans('abcdefg','1234567')
print('my name is nana'.translate(s))
print('fuck off'.replace('f','6',1))
print('fuck off'.rfind('f'))
print ('fuck off'.split('f'))
print ('fu\nck of\nf'.splitlines())
print('fUCK oFF'.swapcase())
print ('dnvwjy'.zfill(30))
View Code

执行结果如下:

Tangcao
Tangcao
True
False
False
alum-fifle-firebord
tangcao+++++++++++++++++++++++
+++++++++++++++++++++++tangcao
aaaa
AAAA
ccccc++++    11
my n1m5 is n1n1
6uck off
7
['', 'uck o', '', '']
['fu', 'ck of', 'f']
Fuck Off
000000000000000000000000dnvwjy
View Code

8、字典的使用

字典是一种key-value的数据类型

特性:无序,key必须是唯一的,所以天生去重!

info = {'stu1101': 'TengLan wu','stu1102': 'LongZe Luola','stu1103': 'XiaoZe Maliya',
}
print(info)
print(info['stu1102'])
info['stu1101'] = '武藤兰'     #修改字典对应key的值
info['stu1104'] = 'cangjinkong'     #没有相应的KEY就添加一条记录。
print (info)#del info['stu1101']     #删除字典内KEY对应的KEY和值。
#del info   #删除整个字典    DEL是Python内置的删除通用方法。
info.pop('stu1101')     #删除
info.popitem()      #随机删除一个
#查找
# info['stu1105']     #没有相应的KEY就出错啦!
# print(info['stu1105'])  #KeyError:'stu1105'
print(info.get('stu1105'))  #查找字典KEY的正确打开方式!
#判断key是否在字典内:
print('stu1105'in info) #等同于PY2.X info.has_key('stu1102')#PY3.X没有了这种方法。#返回布尔值
c = {'stu1101':'dnvwjy',1:3,2:5,}
info.update(c)      #更新,合并字典,有重复就替换。
print(info.items())     #把字典转换成列表
# s = info.fromkeys({6,7,8},'test')   #这里跟info没有任何关系可以写成dict
s = dict.fromkeys([6,7,8],[2,{'name':'lexe'},444])      #fromkeys(key,values),这里的value是一个列表的数据类型
s[8][1]['name']='dbv'       #[key][列表][列表下的值]
s[8][2]='dccv'       #[key][列表][列表下的值],共享的一个内存地址所以列表内的值全改了!如果只有一层就没问题。print (s)
print (info)
#列表的循环:             print (i,info(i))#TypeError: 'dict' object is not callable
for i in info:print (i,info[i])       #这里不能用(),要用[]在字典内取值。for k,j in info.items():        #两个字典循环的结果都一样,但是上面一种更加高效,因为第二种循环需要转换为列表,如果数据#量非常大,运行速度也会变得非常慢。print(k,j)
View Code

结果:

C:\Users\hca006\AppData\Local\Programs\Python\Python36\python.exe "D:/python app/var/day2/dictionary.py"
{'stu1101': 'TengLan wu', 'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya'}
LongZe Luola
{'stu1101': '武藤兰', 'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1104': 'cangjinkong'}
None
False
dict_items([('stu1102', 'LongZe Luola'), ('stu1103', 'XiaoZe Maliya'), ('stu1101', 'dnvwjy'), (1, 3), (2, 5)])
{6: [2, {'name': 'dbv'}, 'dccv'], 7: [2, {'name': 'dbv'}, 'dccv'], 8: [2, {'name': 'dbv'}, 'dccv']}
{'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1101': 'dnvwjy', 1: 3, 2: 5}
stu1102 LongZe Luola
stu1103 XiaoZe Maliya
stu1101 dnvwjy
1 3
2 5
stu1102 LongZe Luola
stu1103 XiaoZe Maliya
stu1101 dnvwjy
1 3
2 5Process finished with exit code 0
View Code

 

字典的多级嵌套

# author:dnvwjy

av_catalog = {"欧美":{"www.youporn.com": ["很多免费的,世界最大的","质量一般"],"www.pornhub.com": ["很多免费的,也很大","质量比yourporn高点"],"letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"],"x-art.com":["质量很高,真的很高","全部收费,屌比请绕过"]},"日韩":{"tokyo-hot":["质量怎样不清楚,个人已经不喜欢日韩范了","听说是收费的"]},"大陆":{"1024":["全部免费,真好,好人一生平安","服务器在国外,慢"]}
}
av_catalog['大陆']['1024'][0] += ',还有91pron' #修改
# print (av_catalog.values())     #打印values
# print (av_catalog.keys())       #打印keys
av_catalog.setdefault('taiwang',{'123':['www.baidu.com']})
#setdefault,如果字典内没有就添加,如果有就返回,不添加。
av_catalog.setdefault('taiwang',{'456':['www.baidu.com']})
print( av_catalog.items())
# print (av_catalog)
View Code
C:\Users\hca006\AppData\Local\Programs\Python\Python36\python.exe "D:/python app/var/day2/dictionary22.py"
dict_items([('欧美', {'www.youporn.com': ['很多免费的,世界最大的', '质量一般'], 'www.pornhub.com': ['很多免费的,也很大', '质量比yourporn高点'], 'letmedothistoyou.com': ['多是自拍,高质量图片很多', '资源不多,更新慢'], 'x-art.com': ['质量很高,真的很高', '全部收费,屌比请绕过']}), ('日韩', {'tokyo-hot': ['质量怎样不清楚,个人已经不喜欢日韩范了', '听说是收费的']}), ('大陆', {'1024': ['全部免费,真好,好人一生平安,还有91pron', '服务器在国外,慢']}), ('taiwang', {'123': ['www.baidu.com']})])Process finished with exit code 0
View Code

 

总结:

想学好Python一定要多动手写代码,要猛戮键盘!:P    不然看得再多也枉然!

鸭梨山大!

 

转载于:https://www.cnblogs.com/dnvwjy/p/6680326.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/429434.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

aMDcpu不支持mysql_Oracle 11.2.0.1在AMD CPU 64位硬件,32位操作系统下的BUG 8670579

通过查询meatlink原因是在ORACLE11.2.0.1 AMD 64位CPU下安装了32位的操作系统&#xff0c;触发了bug 8670579&#xff0c;那要解决该问题只需打上86705bug 8670579硬件信息&#xff1a;CPU:AMD X6在执行dbca的时候也报错如下&#xff1a;[Oracleyorkshi ~]$ dbca## An unexpect…

《网络攻防》第6周作业

20169310 2016-2017-2 《网络攻防实践》第6周学习总结 教材学习内容总结 本周主要学习了《网络攻防---技术与实践》第5、6章的内容&#xff0c;主要学习了 TCP/IP网络协议攻击 和 网络安全防范技术 TCP/IP网络协议攻击概述 网络安全的属性&#xff1a;机密性 、完整性 、可用性…

nios ii小实验——第一个demo指导书

1.新建工程&#xff1a;打开Quartus II 13.0&#xff0c;点击File->New Project Wizard&#xff0c;点击Next后可以看到如图2所示的对话框&#xff0c;选择工程路径给工程命名&#xff08;注意&#xff1a;工程名必须和顶层模块名一致&#xff0c;否则编译会报错&#xff09…

算法交易系列研究之一

一、算法交易的概念 &#xff08;一&#xff09;什么是算法交易 算法交易&#xff08;Algorithmic Trading&#xff09;是一种程序化交易方式&#xff0c;它将交易者和市场有机地联系起来。算法交易通常可以减少这两者之间的摩擦&#xff0c;或者说在一定程度上可以降低交易对市…

Spring3系列7- 自动扫描组件或Bean

原文地址 &#xfeff;&#xfeff;http://www.cnblogs.com/leiOOlei/p/3547589.html 一、 Spring Auto Scanning Components —— 自动扫描组件     1. Declares Components Manually——手动配置component 2. Auto Components Scanning——自动扫描组件 3…

CI Weekly #17 | flow.ci 支持 Java 构建以及 Docker/DevOps 实践分享

这周一&#xff0c;我们迫不及待写下了最新的 changelog —— 项目语言新增「Java」。创建 Java 项目工作流和其它语言项目配置很相似&#xff0c;flow.ci 提供了默认的 Java 项目构建流程模版&#xff0c;快去试试吧&#xff5e; 最近 flow.ci 2017 招聘计划正式启动&#xff…

python选取tensor某一维_Pytorch的Tensor操作(1)

类型推断torch.randn()&#xff1a;随机初始化a.type()&#xff1a;返回类型type()&#xff1a;返回基本类型isinstance() &#xff1a;检查类型cuda会影响数据类型标量维度(dimention)为0的标量标量的shape&#xff1a;返回类型为【】(空的list)&#xff0c;返回长度也为0a.di…

201521123014 《Java程序设计》第8周学习总结

201521123014 《Java程序设计》第8周学习总结 1. 本周学习总结 1.1 以你喜欢的方式&#xff08;思维导图或其他&#xff09;归纳总结集合与泛型相关内容。 泛型&#xff08;编写的代码可被不同类型的对象所重用&#xff09; Java中一个集合可以放任何类型的对象&#xff0c;因为…

【4.0】jdbcTemplate

1.什么是jdbcTemplate? 2.使用jdbcTemplate 3.crud操作 参考博文&#xff1a;http://blog.csdn.net/u014800380/article/details/64125653 4.采用配置文件的方式使用jdbcTemplate 参考博文&#xff1a;http://suyanzhu.blog.51cto.com/8050189/1563219/ 参考博文原文&#x…

基于MODBUS协议的单片机与(串口屏)触摸屏通信(图文)

基于MODBUS协议的单片机与(串口屏)触摸屏通信(图文) 导读&#xff1a;触摸屏能够直观、生动地显示运行参数和运行状态&#xff0c;而且通过触摸屏画面可以直接修改系统运行参数&#xff0c;人机交互性好。触摸屏和单片机通信&#xff0c;需要根据触摸屏采用的通信协议为单片机编…

【转】C#之继承

C#之继承 一.继承的类型  在面向对象的编程中&#xff0c;有两种截然不同继承类型&#xff1a;实现继承和接口继承  1.实现继承和接口继承  *实现继承&#xff1a;表示一个类型派生于基类型&#xff0c;它拥有该基类型的所有成员字段和函数。在实现继承中&#xff0c;派生…

java 学习计划_Java学习计划范例

Java学习计划范例Java学习计划好的计划是成功的一半&#xff0c;今天是在创新思维的第一节课&#xff0c;在这门课程的开始&#xff0c;一个有策略的、有目的性的计划是非常必要的&#xff0c;为了在以后的学习中能够达到最好的.效果&#xff0c;"坚持"是一把雕刻刀&…

SQL Server 2012自动备份

SQL 2012和2008一样&#xff0c;都可以做维护计划&#xff0c;来对数据库进行自动的备份。 现在做这样一个数据库维护的计划&#xff0c;每天0点对数据库进行差异备份&#xff0c;每周日0点对数据库进行完全备份&#xff0c;并且每天晚上10点删除一次过期备份&#xff08;两个星…

mysql查逻辑表的分片规则_MySQL(19) Mycat分片(分库分表)配置

一、前言本文将基于主从复制&#xff0c;读写分离的环境基础上进行一个简单的分片(分库分表)配置二、Mycat分片配置mycat分片主要在scheam.xml&#xff0c;rule.xml这2个表中配置① scheam.xml&#xff1a;配置逻辑表以及对应使用的分片规则select user()这里小编主要对t_user表…

JS取消浏览器文本选中的方法

一 、问题的出现 今天在使用Easy-UI 的messager.alert()方法时候出现浏览器文本被选中&#xff0c;不知道其中是什么原因&#xff0c;如下图所示。 二 、解决思路 我最后的思路时在弹出消息框的同时&#xff0c;取消浏览器文本的选择&#xff0c;最后查找资料编写如下方法。  …

linux 脚本 java_Linux 通过脚本执行Java程序

由于要统计不同的IP&#xff0c;代码中应用了HashSet来存放IP地址。上述Java程序是在Windows下编写的&#xff0c;如果在Linux服务器上运行&#xff0c;只需要把上面文件的路径和文件更换了就可以了。2.编写好java程序后&#xff0c;将java程序打成jar文件(环境Linux)我将上述测…

Java开启/关闭tomcat服务器

© 版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请注明出处 通过java代码实现Tomcat的开启与关闭 1.项目结构 2.CallTomcat.java package com.calltomcat.test;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;…

5、如何快速找到多个字典中的公共键(key) 6 如何让字典保持有序 7 如何实现用户的历史记录功能(最多n条)...

5、如何快速找到多个字典中的公共键(key) from random import randint,sample #随机取数 # a sample("ABCDEF",randint(5,6)) # print(a) # b1 {x:randint(1,4) for x in sample("ABCDEF",randint(3,6))} # b2 {x:randint(1,4) for x in sample("A…

KVM虚拟化技术之使用Qemu-kvm创建和管理虚拟机

一 .KVM 简介 KVM &#xff08;名称来自英语&#xff1a; Kernel-basedVirtual Machine 的缩写&#xff0c;即基于内核的虚拟机&#xff09; &#xff0c; 是一种用于Linux内核中的虚拟化基础设施&#xff0c;可以将Linux内核转化为一个hypervisor。KVM在2007年2月被导入Li…

python 如何在一个for循环中遍历两个列表

是我在看《笨方法学python》过程中发现有一行代码看不懂——“ for sentence in snippet, phrase:”&#xff0c;所以研究了半天&#xff0c;感觉挺有收获的。所以就放在博客上分享给大家了。 直入主题&#xff1a; 为了不耽误大家时间&#xff0c;如果知道以下为两段代码为什么…