Python之路,第八篇:Python入门与基础8
python3 字典(dict)
概念:1 ,字典是一种可变的容器,可以存储任意类型的数据;
2, 字典中的每个数据都是用“键”(key)进行索引,而不像序列可以用下标进行索引;
3, 字典中的数据没有先后关系,字典的存储是无序的;
4, 字符的数据是以键(key)-值(value)
5,字典的表示方式以{} 括起来,以冒号(:)分隔键值对, 各键值对之间用逗号隔开;
6, 字典的键不能重复,值可以重复;
创建空字典的方法:
d = {} # 空字典
d = dict() #空字典(迭代)
创建非空字典的方法:
d = {‘a’:1 , 'b':2 }
d = {'name': None , 'age':18 }
字典的值(value)可以为任意类型:
字典的值可以是布尔值,数据, 字符串, None,列表, 元组,字典,以及集合,函数,类对象等所有类型
>>>
>>> {'a':123}
{'a': 123}
>>> {'a':"abc"}
{'a': 'abc'}
>>> {'a':True}
{'a': True}
>>> {'a':None}
{'a': None}
>>> {'a':(1,2,3)}
{'a': (1, 2, 3)}
>>> {'a':[1,2,3]}
{'a': [1, 2, 3]}
>>> {'a':{"aa":1}}
{'a': {'aa': 1}}
>>>
字典的键(key) 必须为不可变类型的值
不可变的类型: bool 、int 、 float 、 complex 、 str 、 tuple 、frozenset (包括:None)
不能充当键的类型有:
列表list,字典dict,集合set
例子: {}
>>> {"a":"a"}
{'a': 'a'}
>>> {100:""}
{100: ''}
>>> {True:"True"}
{True: 'True'}
>>> {None:"abc"}
{None: 'abc'}
>>> {(1911,1,1):"aaa"}
{(1911, 1, 1): 'aaa'}
>>>
练习:
回文
#!/usr/bin/python s = input("Please enter:")
n = len(s) // 2
for x in range(0, n + 1):
if s[x] != s[ -( x+1)]:
print("不是回文")
break
else:
print("是回文")
>>> ================================ RESTART ================================
>>>
Please enter:123321
是回文
>>> ================================ RESTART ================================
>>>
Please enter:abccba
是回文
>>> ================================ RESTART ================================
>>>
Please enter:21352656121
不是回文
>>> ================================ RESTART ================================
>>>
Please enter:fargserwaqrg
不是回文
>>>
#!/usr/bin/python s = input("Please enter:")
l = list(s) #正序列表
l2 = list(reversed(s)) ##反序列表
if l == l2:
print("是回文")
else:
print("不是回文")
>>> ================================ RESTART ================================
>>>
Please enter:asddsa
是回文
>>>
#!/usr/bin/python s = input("Please enter:")
print(s)
print(s[::-1])
if s == s[::-1]:
print("是回文")
else:
print("不是回文")
数字出现次数
#!/usr/bin/python exist = [] # 已访问过的列表
s = input("请输入一串数字:")
for x in s:
if x not in exist:
print(x, '出现', s.count(x), '次')
exist.append(x) #for x in s:
# if x in exist:
# pass
# else:
# print(x, '出现', s.count(x), '次')
# exist.append(x)
>>> ================================ RESTART ================================
>>>
请输入一串数字:7324525901243
7 出现 1 次
3 出现 2 次
2 出现 3 次
4 出现 2 次
5 出现 2 次
9 出现 1 次
0 出现 1 次
1 出现 1 次
>>>
字典符访问:
用方括号访问字典内的成员,字典[‘’键‘’] ;
>>> d = {'a':1 , 'b':2}
>>> d['a']
1
>>> d['b']
2
>>>
添加或修改字典的键的值:
字典[ "键" ] = 值
如果,键存在,修改键绑定的值; 如果键不存在,创建键并帮定值;
>>> d1 = {} #创建空字典
>>> type(d1)
<class 'dict'>
>>> d1['name'] = 'xiaoming' #添加键值对
>>> d1['age'] = 18 ##添加键值对
>>> d1['age'] = 19 #修改键的值
>>>
删除字典元素 del
del 字典【键】
>>> d1
{'age': 19, 'name': 'xiaoming'}
>>> del d1['age']
>>> d1
{'name': 'xiaoming'}
>>
获取字典元素个数的函数:
len(dict) 返回字典元素(键值对)个数;
字典的成员资格判断in 、not in 运算符;
用in 、not in 来判断一个键是否存在于字典中,如果存在则返回True, 如果不存在则返回False;
>>> d1
{'age': 16, 'name': 'xiaoming'}
>>>
>>>
>>> 'name' in d1
True
>>> 16 in d1
False
>>>
字典的生成函数:
dict() 生成一个函数,等同于{ }
dict(iterable) 用可迭代对象初始化字典
dict(**kwargv ) 关键字参数形式生成一个字典
例子: d = dict()
>>> d = dict([('name','xiaoming'),('age', 18)]) #{'age': 18, 'name': 'xiaoming'} 返回字典
d = dict(name="xiaoli", age=19) #{'age': 19, 'name': 'xiaoli'}
d = {} # name = "zhangsan" {'name' : name} {'name': 'zhangsan'}
字典的方法:
D 代表字典对象
D.clear() 清空字典
D.pop(key) 移除键,同时返回此键所对应的值
D.copy() 返回字典D的副本,只复制一层,(浅拷贝)
D.update(D2) 将字典D2合并到字典D中,如果键相同则值取D2的值作为新值;
D.get(key , default) 返回键key所对应的值,如果没有此键则返回default
D.keys() 返回可迭代的dict_keys 集合对象
D.values() 返回可迭代的dict_values 值对象
D.items() 返回可迭代的dict_iterm对象
>>> help(d.get)
Help on built-in function get: get(...) method of builtins.dict instance
D.get(k[,d]) -> D[k] if k in D, else d. d defaults to None. >>> d
{'age': 19, 'name': 'xiaoli'}
>>>
>>>
>>> d.clear
<built-in method clear of dict object at 0x000000000372B948>
>>> d
{'age': 19, 'name': 'xiaoli'}
>>> d.clear()
>>> d
{}
>>> d={'age': 19, 'name': 'xiaoli'}
>>> d
{'age': 19, 'name': 'xiaoli'}
>>> d.pop('name')
'xiaoli'
>>> d1
{'age': 16, 'name': 'xiaoming'}
>>> del d1
>>> d2
Traceback (most recent call last):
File "<pyshell#47>", line 1, in <module>
d2
NameError: name 'd2' is not defined
>>> d1
Traceback (most recent call last):
File "<pyshell#48>", line 1, in <module>
d1
NameError: name 'd1' is not defined
>>> d.copy(d1)
Traceback (most recent call last):
File "<pyshell#49>", line 1, in <module>
d.copy(d1)
NameError: name 'd1' is not defined
>>> d1 = d.copy()
>>> d1
{'age': 19}
>>> d
{'age': 19}
>>> d.get('name', "没找到")
'没找到'
>>> d
{'age': 19}
>>> d2 = {'aa':1,'bb':2}
>>> d.update(d2)
>>> d
{'age': 19, 'bb': 2, 'aa': 1}
>>> d2
{'bb': 2, 'aa': 1}
>>> d.keys()
dict_keys(['age', 'bb', 'aa'])
>>> d.values()
dict_values([19, 2, 1])
>>> d.items()
dict_items([('age', 19), ('bb', 2), ('aa', 1)])
>>>
>>> d.items()
dict_items([('age', 19), ('bb', 2), ('aa', 1)])
>>> for k in d.keys():
print(k) age
bb
aa
>>> for k,v in d.items():
print(k,v) age 19
bb 2
aa 1
>>> for v in d.values():
print(v) 19
2
1
>>>
字典推导式:
语法: { 键表达式 : 值表达式 for 变量 in 可迭代对象 (if 条件表达式) }
字典推导式可以嵌套的
>>> name
['xiaoming', 'xiaoli', 'xiaogang', 'zhangsan']
>>> numbers = [1001, 1002, 1003, 1004] >>> an = { numbers[i] : name[i] for i in range(4) if numbers[i] % 2 == 0}
>>> an
{1002: 'xiaoli', 1004: 'zhangsan'}
>>>
>>> list1 = ['a','b','c']
>>> list2 = [1,2,3]
>>> dict_a = { list1[i] : list2[i] for i in range(3)}
>>> dict_a
{'a': 1, 'c': 3, 'b': 2}
>>>
字典和列表的比较:
in 、 not in
列表的in 操作通常要每个都进行比较;
字典的in 操作不需要比较;
字典的基本函数操作:
len(x) 返回字典的长度
max(x) 返回字典键的最大值
min(x) 返回字典键的最小值
sum(x) 返回字典中所有键的和
any(x) 真值测试,任意键为真,则返回True,否则为False
all(x) 真值测试,所有键为真,则返回True,否则为False
例子
Python之路,第八篇:Python入门与基础8的更多相关文章
- Python之路(第八篇)Python内置函数、zip()、max()、min()
一.python内置函数 abs() 求绝对值 例子 print(abs(-2)) all() 把序列中每一个元素做布尔运算,如果全部都是true,就返回true, 但是如果是空字符串.空列表也返回t ...
- 【Python之路】第九篇--Python基础之线程、进程和协程
进程与线程之间的关系 线程是属于进程的,线程运行在进程空间内,同一进程所产生的线程共享同一内存空间,当进程退出时该进程所产生的线程都会被强制退出并清除.线程可与属于同一进程的其它线程共享进程所拥有的全 ...
- 【Python之路】特别篇--Python面向对象(进阶篇)
上一篇<Python 面向对象(初级篇)>文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使 ...
- Python之路【第九篇】堡垒机基础&数据库操作
复习paramiko模块 Python的paramiko模块,是基于SSH用于连接远程服务器并执行相关操作. SSHClient #!/usr/bin/env python #-*- coding:u ...
- Python之路(第七篇)Python作用域、匿名函数、函数式编程、map函数、filter函数、reduce函数
一.作用域 return 可以返回任意值例子 def test1(): print("test1") def test(): print("test") ret ...
- Python之路(第五篇) Python基本数据类型集合、格式化、函数
一.变量总结 1.1 变量定义 记录某种状态或者数值,并用某个名称代表这个数值或状态. 1.2 变量在内存中的表现形式 Python 中一切皆为对象,数字是对象,列表是对象,函数也是对象,任何东西都是 ...
- 【Python之路】特别篇--Python切片
字符串切片操作 切片操作符是序列名后跟一个方括号,方括号中有一对可选的数字,并用冒号分割. 注意: 数是可选的,而冒号是必须的. consequence[start:end:step] 切片操作符中的 ...
- 【Python之路】特别篇--Python内置函数
abs() 求绝对值 i = abs(-100) print(i) # 100 all() 循环里面的参数 如果每个元素都为真,那么all返回值为真 假: 0 False None "&q ...
- 【Python之路】特别篇--Python文件操作
文件操作 open函数,该函数用于文件处理 操作文件时,一般需要经历如下步骤: (1)打开文件 (2)操作文件 一.打开文件 文件句柄 = open('文件路径', '模式','编码') 打开文件时, ...
- 【Python之路】特别篇--Python装饰器
前情提要 1. 作用域 在python中,函数会创建一个新的作用域.python开发者可能会说函数有自己的命名空间,差不多一个意思.这意味着在函数内部碰到一个变量的时候函数会优先在自己的命名空间里面去 ...
随机推荐
- Mysql for Linux安装配置之—— rpm(bundle)安装
1.准备及安装1)下载rpm安装包(或rpm bundle) rpm安装包包括两个(bundle会更多),一个是client,另一个是server,例如:MySQL-client-5.5.44-1. ...
- [LeetCode] 191. Number of 1 Bits ☆(位 1 的个数)
描述 Write a function that takes an unsigned integer and return the number of '1' bits it has (also kn ...
- [LeetCode] 113. Path Sum II ☆☆☆(二叉树所有路径和等于给定的数)
LeetCode 二叉树路径问题 Path SUM(①②③)总结 Path Sum II leetcode java 描述 Given a binary tree and a sum, find al ...
- js正则表达式取{}中的值
var reg = /[^\{}]*\{(.*)\}[^\}]*/; var str = "1111{122}"; console.log(str.replace(reg,'$1' ...
- weblogic修改安装路径教程
我们有一个安装好的weblogic,我们想再装一个weblogic或者想把weblogic装到别的目录去,最直接的做法是从头装一个. 但是从头装一个是比较费时费力的,尤其是打补丁环节和创domain环 ...
- [转]java异常中Exception捕获不到的异常
一 概念 众所周知java提供了丰富的异常类,这些异常类之间有严格的集成关系,分类为 父类Throwable Throwable的两个子类Error和Exception Exception的两个子类C ...
- MAVEN 创建WAR项目
MAVEN 创建WEB项目 $ mvn archetype:generate -DgroupId=com.aouo -DartifactId=myWebApp -DarchetypeArtifactI ...
- Android 音视频深入 五 完美的录视频(附源码下载)
本篇项目地址,名字是录视频,求star https://github.com/979451341/Audio-and-video-learning-materials 这一次的代码录视频在各个播放器都 ...
- 架构之路:nginx与IIS服务器搭建集群实现负载均衡(一)
最近亮亮在研究IIS的负载均衡!本人由于初出茅庐,防骗意识薄弱,一不小心被亮亮坑上了IIS负载均衡之路(亮亮是真黑哈!).前车之鉴啊!小伙伴们要小心.不过既上了贼船,便决定一条道走到黑.于是乎从大前天 ...
- IDEA教程之导入maven项目
通过从网上的开源项目下载源码,一般都是maven管理的项目,此类项目可以通过导入快捷运行项目,如图为下载的一个项目: 2 打开IDEA,点击第二个选项“Import Porject”,然后选择源码根目 ...