python基础-字典、enumerate、is和==区别、编码问题、一些有迷惑的方法
来源:互联网 发布:js date 时间戳 编辑:程序博客网 时间:2024/06/08 05:48
- 字典
- fromkeys
- 一些容易混淆方法
- enumerate枚举
- is 区别
- 编码问题
字典
#字典的键是可哈希的,就是不可变数据类型 str,数字体,bool,元组#键是唯一的print("----------------")dic = {"name":"aaaa", "skill":["pthon","go"], "hobby":("sing","internet"), True:"aa", 3:"bb", 1:"dd", (1,2):"cc" }print(dic["name"])print(dic["skill"])print(dic["hobby"])print(dic[True])#?为啥不输出"aa"?如何让它输出"aa"?print(dic[3])print(dic[(1,2)])print(dic[1])####嵌套print("----####嵌套-------")print(dic["hobby"][0])dic = {"name":"safly", "skill":["pthon","go"], "hobby":("sing","internet") }print("#############增1############")dic["weigh"] = 75print(dic)#增2--'k': Nonedic.setdefault("k")print(dic)dic.setdefault("m","n")print(dic)#如果字典中有name,不会做操作,没有的话就需要添加dic.setdefault("name")print(dic)print("###############删###########")dic.pop("skill")print(dic)#如果没有要删除的键,会报错# dic.pop("skill")a = dic.pop("skill","没有该键,该方法但不报错")print(a)#随机删除一个键值对dic.popitem()print(dic)del dic["hobby"]print(dic)#清空# dic.clear()# print(dic)print("###############改###########")dic["name"] = "jinxing"print(dic)#update把dic1的键值对添加并覆盖到dic中dic1 = {"name":"jjkk","ddsfsdf":"gegew"}dic.update(dic1)print(dic)print(dic1)print("############查############")print(dic["name"])#如果不存在name1键,就会报错# print(dic1["name1"])print(dic.get("name"))#没有键值对返回None,但是不报错print(dic.get("sdfsdf"))print(dic.get("sf","没有这个键盘"))print("############获取所有的键############")keys = dic.keys()print(keys)print(type(keys))for key in keys: print(key)print("############获取所有的值############")values = dic.values()print(values)for i in values: print(i)print("---获取所有的键-----")for i in dic: print(i)print("-------循环dic.items--------")print(dic.items())####循环获取里面的元组####for i in dic.items(): print(i)####循环获取里面的元组的键值对####for key,vlalue in dic.items(): print(key,vlalue)
输出如下:
E:\python\python_sdk\python.exe E:/python/py_pro/safly.py----------------aaaa['pthon', 'go']('sing', 'internet')ddbbccdd----####嵌套-------sing#############增1############{'name': 'safly', 'skill': ['pthon', 'go'], 'hobby': ('sing', 'internet'), 'weigh': 75}{'name': 'safly', 'skill': ['pthon', 'go'], 'hobby': ('sing', 'internet'), 'weigh': 75, 'k': None}{'name': 'safly', 'skill': ['pthon', 'go'], 'hobby': ('sing', 'internet'), 'weigh': 75, 'k': None, 'm': 'n'}{'name': 'safly', 'skill': ['pthon', 'go'], 'hobby': ('sing', 'internet'), 'weigh': 75, 'k': None, 'm': 'n'}###############删###########{'name': 'safly', 'hobby': ('sing', 'internet'), 'weigh': 75, 'k': None, 'm': 'n'}没有该键,该方法但不报错{'name': 'safly', 'hobby': ('sing', 'internet'), 'weigh': 75, 'k': None}{'name': 'safly', 'weigh': 75, 'k': None}###############改###########{'name': 'jinxing', 'weigh': 75, 'k': None}{'name': 'jjkk', 'weigh': 75, 'k': None, 'ddsfsdf': 'gegew'}{'name': 'jjkk', 'ddsfsdf': 'gegew'}############查############jjkkjjkkNone没有这个键盘############获取所有的键############dict_keys(['name', 'weigh', 'k', 'ddsfsdf'])<class 'dict_keys'>nameweighkddsfsdf############获取所有的值############dict_values(['jjkk', 75, None, 'gegew'])jjkk75Nonegegew---获取所有的键-----nameweighkddsfsdf-------循环dic.items--------dict_items([('name', 'jjkk'), ('weigh', 75), ('k', None), ('ddsfsdf', 'gegew')])('name', 'jjkk')('weigh', 75)('k', None)('ddsfsdf', 'gegew')name jjkkweigh 75k Noneddsfsdf gegewProcess finished with exit code 0
fromkeys
print("----------")dic = dict.fromkeys("abc",["aaa"])print(dic)print("----------")dic = dict.fromkeys(("abc"),["a","b"])print(dic)print("----------")dic = dict.fromkeys(["a","c"],[])print(dic)dic["a"].append("aaa")dic["c"].append("bbb")dic["d"] = ["ccc"]dic["a"] = ["aaaagg"]print(dic)print("----------")dic = dict.fromkeys([1,2,3],"杨姐")dic[1]="ss"print(dic)
输出如下:
E:\python\python_sdk\python.exe E:/python/py_pro/demo.py----------{'a': ['aaa'], 'b': ['aaa'], 'c': ['aaa']}----------{'a': ['a', 'b'], 'b': ['a', 'b'], 'c': ['a', 'b']}----------{'a': [], 'c': []}{'a': ['aaaagg'], 'c': ['aaa', 'bbb'], 'd': ['ccc']}----------{1: 'ss', 2: '杨姐', 3: '杨姐'}Process finished with exit code 0
一些容易混淆方法
tu3 = (2)tu1 = ("aaa",1)tu = ("aaa",)tu4 = (True)tu5 = ([1,3,4])print(type(tu))print(type(tu1))print(type(tu3))print(type(tu4))print(type(tu5))a,b = [1,2]print(a,b)a,b = (3,4)print(a,b)
输出如下:
E:\python\python_sdk\python.exe E:/python/py_pro/demo.py<class 'tuple'><class 'tuple'><class 'int'><class 'bool'><class 'list'>1 23 4
enumerate枚举
li = ["dfdf","32fd","df"]for i in enumerate(li): print(i)print("#############dic#################")dic = {"a":"aa","b":"bb"}for i in enumerate(dic): print(i)for i in enumerate(dic.keys()): print(i)for i in enumerate(dic.values()): print(i)print("------元组的方式输出---")for i in enumerate(dic.items()): print(i)print("------非元组的方式输出---")for i,j in enumerate(dic.items()): print(i,j)print("-----for dic.items------")print(dic.items())for i in dic.items(): print(i)print("-----for v,k dic.items------")for v,k in dic.items(): print(v,k)print("-----for i keys------")print(dic.keys())for i in dic.keys(): print(i)print("-----for i values------")print(dic.values())for i in dic.values(): print(i)print("-----for i dic------")print(dic)for i in dic: print(i,type(i))print("#############str#################")#第二个参数是从索引开始str = "sfjwrejlwer"for i in enumerate(str,2): print(i)
输出如下:
E:\python\python_sdk\python.exe E:/python/py_pro/demo.py(0, 'dfdf')(1, '32fd')(2, 'df')#############dic#################(0, 'a')(1, 'b')(0, 'a')(1, 'b')(0, 'aa')(1, 'bb')------元组的方式输出---(0, ('a', 'aa'))(1, ('b', 'bb'))------非元组的方式输出---0 ('a', 'aa')1 ('b', 'bb')-----for dic.items------dict_items([('a', 'aa'), ('b', 'bb')])('a', 'aa')('b', 'bb')-----for v,k dic.items------a aab bb-----for i keys------dict_keys(['a', 'b'])ab-----for i values------dict_values(['aa', 'bb'])aabb-----for i dic------{'a': 'aa', 'b': 'bb'}a <class 'str'>b <class 'str'>#############str#################(2, 's')(3, 'f')(4, 'j')(5, 'w')(6, 'r')(7, 'e')(8, 'j')(9, 'l')(10, 'w')(11, 'e')(12, 'r')Process finished with exit code 0
is ==区别
str = "safly"#内存地址print(type(str),id(str))#== iss1 = "alex"s2 = "alex"#==比较的值print(s1 == s2)#比较的内存地址print(s1 is s2)print(id(s1),id(s2))#-5到256 同一个内存地址,pychar优化了,是同一个内存地址值print("----------")num = 1num1 = 1print(num is num1)num = 256num1 = 256print(num is num1)num = -5num1 = -5print(num is num1)nu = 259nu1 = 259print(nu is nu1)print(id(nu),id(nu1))print("----------")#########列表、字典、元组、集合内存地址不一样##############s1= [1,3]s2 = [1,3]print(s1 == s2)print(s1 is s2)print(id(s1),id(s2))
输出如下:
E:\python\python_sdk\python.exe E:/python/py_pro/demo.py<class 'str'> 2319200TrueTrue16064928 16064928----------TrueTrueTrueTrue3990112 3990112----------TrueFalse4193136 4193176Process finished with exit code 0
由于pychar优化了,我们看下在doc命令行中看看内存地址is方法的区别
另外字符这里需要补充下字符串不能有空格、字符长度不能超过20,不能有特殊字符
编码问题
py3: unicode A :00000000 00000000 00000000 00001001 四个字节 中 :00000000 00001000 00000000 00000001 四个字节 utf-8 A :00000001 一个字节 欧洲@ : 00000010 00000001 两个字节 亚洲 中 : 00001000 00000000 00000001 三个字节 中国:00001000 00000000 00000001 00001001 00000000 00000001 gbk A :00000000 00001001 两个字节 中 :00000000 00100001 两个字节 不同的编码之间是不能相互识别,会产生乱码。 存储,传输的:utf-8,或者 gbk,或者是gb2312,或者是其他(绝对不是unicode)。
我们看一个简单的例子
s = 'Q'b1 = s.encode('utf-8')print(b1)b2 = s.encode('gbk')print(b2)s1 = '晓梅'b11 = s1.encode('utf-8')print(b11)s2 = '晓梅'b22 = s1.encode('gbk')print(b22)
输出如下:
E:\python\python_sdk\python.exe E:/python/py_pro/demo.pyb'Q'b'Q'b'\xe6\x99\x93\xe6\xa2\x85'b'\xcf\xfe\xc3\xb7'Process finished with exit code 0
简单分析下
py3: int bytes 表现形式: s = b'alex' 内部存储是(utf-8,gbk,gb2312.....)010101 s1 = '晓梅' b11 = s1.encode('utf-8') 表现形式: s = b'\xe6\x99\x93\xe6\xa2\x85' (utf-8,gbk,gb2312.....)010101 0000 1000 0000 0000 0000 0001 0000 1001 0000 0000 0000 0001 s2 = '晓梅' b22 = s1.encode('gbk') print(b22) b'\xcf\xfe\xc3\xb7' 表现形式: s = b'\xcf\xfe\xc3\xb7' (utf-8,gbk,gb2312.....)010101 0000 1000 0000 0000 0000 0001 0000 1001 str 表现形式: s = 'alex' 内部存储是 unicode 0101010
阅读全文
0 0
- python基础-字典、enumerate、is和==区别、编码问题、一些有迷惑的方法
- leetcode-1:python基础,循环、条件、列表、字典的应用,enumerate、range函数以及2.0和3.0print的区别
- [基础] - Python中 is 和 == 的区别
- Python 列表和字典的一些方法
- python is 和==的区别
- java基础问题----"=="和equals方法究竟有什么区别
- 【JAVA基础小问题】"=="和equals方法有什么区别?
- python 基础2 编码转换 pycharm 配置 运算符 基本数据类型int str list tupple dict for循环 enumerate序列方法 range和xrange
- 字典排序:函数方法报错,lambda,type与isinstance的区别,==与is
- python编码的一些问题
- python 的字典和方法
- Python中is和==的区别和联系
- python中的一些遍历列表,元组,字符串等的方法,如:range,enumerate
- 那些Python方法---enumerate()
- python Enumerate( )方法
- Python的静态方法和类方法有什么区别
- Python中is和==的区别
- Python中is和==的区别
- Java面向对象
- HttpWatch学习笔记三
- 怎样选择ADC芯片?
- css让div水平垂直居中,用弹性盒子
- Rain.文件床--免费的文件暂存器
- python基础-字典、enumerate、is和==区别、编码问题、一些有迷惑的方法
- 一个好用非常棒的网站,以后不用下载office和ps了,直接在网站中写word,excel,ppt,ps等等
- Fiddler抓取HTTPS包
- Android Studio工程中添加Admob广告条代码详解
- nodejs -- base加密和解密
- 重载的例子
- java程序员从笨鸟到菜鸟之(八)多态
- 泛型
- “独享宽带”是什么意思?