数据类型划分:
    可变数据类型:list、dict、set    不可哈希
    不可变数据类型:tuple、bool、int、str    可哈希

字典

python内置了字典类型,使用键-值(key - value) 存储,具有极快的查找速度;

key:必须是 不可变数据类型
value:任意数据类型

dict 优点:
    二分查找效率快
    存储大量的关系型数据
    特点:字典是无序的

dict的增删改查

1. 增加

(A) dic1['key'] = value     没有键值对,则添加;如果键,则值覆盖。

dic1 = {"name": "hkey", "age": 18, "sex": "male"}
dic1["heigh"] = 185
dic1['name'] = 'jay'
print(dic1)
# 执行结果:
# {'age': 18, 'sex': 'male', 'name': 'jay', 'heigh': 185}

(B) set_default()    有键值对,不做任何改变,没有才添加。

dic = {'name':'jay', 'age':18, 'sex': 'male'}

dic.setdefault('age', 20)       # 存在不修改,不报错
dic.setdefault('heigh', 180) # 不存在修改。
print(dic) # 执行结果:
# {'sex': 'male', 'heigh': 180, 'age': 18, 'name': 'jay'}

2. 删除

(A) pop(key, None)    删除键值对,并返回值。如果字典中没有删除的key,则返回 None

dic = {'name':'jay', 'age':18, 'sex': 'male'}
t1 = dic.pop('name') # 当 key 存在时,删除字典中的key-value并返回value值给 t1
print(t1)
print(dic) # 执行结果:
# jay
# {'sex': 'male', 'age': 18} dic = {'name':'jay', 'age':18, 'sex': 'male'}
t1 = dic.pop('name1111', None) # 当 key 不存在时,则返回定义的第二个参数给 t1
print(t1)
# 执行结果:
# None

(B) popitem() 随机删除并返回删除元组,元组里面是删除的键值对

dic = {'name':'jay', 'age':18, 'sex': 'male'}

t1 = dic.popitem()  # 随机删除key-value 并作为元组返回给 t1
print(t1, type(t1))
print(dic) # 执行结果:
# ('name', 'jay') <class 'tuple'>
# {'sex': 'male', 'age': 18}

(C) del 删除键值对或者整个字典

dic = {'name':'jay', 'age':18, 'sex': 'male'}
del dic['name'] # 删除字典中的键值对
del dic # 直接删除整个字典

3. 修改

(A) update     合并两个字典

dic = {'name':'jay', 'age':18, 'sex': 'male'}
dic2 = {'name1':'hkey', 'age1': 20} dic.update(dic2) # 将dic2作为参数合并到dic中,dic变,dic2不变 print('dic:', dic)
print('dic2:', dic2) # 执行结果:
# dic: {'age': 18, 'name': 'jay', 'sex': 'male', 'name1': 'hkey', 'age1': 20}
# dic2: {'age1': 20, 'name1': 'hkey'}

4. 查询

(A) dic.keys    字典key的组合,可以当成list类型来处理
(B) dic.values    字典value的组合,可以当成list类型来处理
(C) dic.items    字典(key, value)的组合,可以当做元组来处理

dic = {'name':'jay', 'age':18, 'sex': 'male'}

print(dic.keys())
print(dic.values())
print(dic.items()) # 执行结果:
# dict_keys(['age', 'sex', 'name'])
# dict_values([18, 'male', 'jay'])
# dict_items([('age', 18), ('sex', 'male'), ('name', 'jay')]) keys()、values()、items() 一般用for来遍历 for k in dic: # 循环 key 值
print(k) for v in dic.values(): # 循环 value 值
print(v) for k, v in dic.items(): # 循环key, value 值
print(k, v)

(D) dic.get()    存在则返回 value值,不存在就返回预设值

dic = {'name':'jay', 'age':18, 'sex': 'male'}
print(dic.get('name'))
print(dic.get('name111', None)) # 执行结果:
# jay
# None

练习题:

s1 = 'asdf123sdfer45sdf3'
统计 s1 出现数字的次数,连续的数字算一个数字;

s1 = 'asdf123sdfer45sdf3'

for i in s1:    # 循环整个 s1 字符串
if i.isalpha(): # 当单个字符串是字母的时候,就将字母替换成空格
s1 = s1.replace(i, ' ') li = s1.split() # 通过空格将字符串 s1 分隔成列表
print(len(li)) # 直接统计列表元素的个数 # 执行结果:
# 3

[ python ] 字典的使用的更多相关文章

  1. Python字典和集合

    Python字典操作与遍历: 1.http://www.cnblogs.com/rubylouvre/archive/2011/06/19/2084739.html 2.http://5iqiong. ...

  2. python 字典排序 关于sort()、reversed()、sorted()

    一.Python的排序 1.reversed() 这个很好理解,reversed英文意思就是:adj. 颠倒的:相反的:(判决等)撤销的 print list(reversed(['dream','a ...

  3. python字典中的元素类型

    python字典默认的是string item={"browser " : 'webdriver.irefox()', 'url' : 'http://xxx.com'} 如果这样 ...

  4. python字典copy()方法

    python 字典的copy()方法表面看就是深copy啊,明显独立 d = {'a':1, 'b':2} c = d.copy() print('d=%s c=%s' % (d, c)) Code1 ...

  5. python 字典实现类似c的switch case

    #python 字典实现类似c的switch def print_hi(): print('hi') def print_hello(): print('hello') def print_goodb ...

  6. python字典的常用操作方法

    Python字典是另一种可变容器模型(无序),且可存储任意类型对象,如字符串.数字.元组等其他容器模型.本文章主要介绍Python中字典(Dict)的详解操作方法,包含创建.访问.删除.其它操作等,需 ...

  7. Python 字典(Dictionary)操作详解

    Python 字典(Dictionary)的详细操作方法. Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串.数字.元组等其他容器模型. 一.创建字典 字典由键和对应值成对组成.字 ...

  8. Python 字典(Dictionary) get()方法

    描述 Python 字典(Dictionary) get() 函数返回指定键的值,如果值不在字典中返回默认值. 语法 get()方法语法: dict.get(key, default=None) 参数 ...

  9. Python 字典(Dictionary) setdefault()方法

    描述 Python 字典(Dictionary) setdefault() 函数和get()方法类似, 如果键不已经存在于字典中,将会添加键并将值设为默认值. 语法 setdefault()方法语法: ...

  10. python 字典内置方法get应用

    python字典内置方法get应用,如果我们需要获取字典值的话,我们有两种方法,一个是通过dict['key'],另外一个就是dict.get()方法. 今天给大家分享的就是字典的get()方法. 这 ...

随机推荐

  1. 洛谷 P3312 [SDOI2014]数表 解题报告

    P3312 [SDOI2014]数表 题目描述 有一张\(N*M\)的数表,其第\(i\)行第\(j\)列(\(1\le i \le n\),\(1 \le j \le m\))的数值为能同时整除\( ...

  2. 洛谷 P3539 [POI2012]ROZ-Fibonacci Representation 解题报告

    P3539 [POI2012]ROZ-Fibonacci Representation 题意:给一个数,问最少可以用几个斐波那契数加加减减凑出来 多组数据10 数据范围1e17 第一次瞬间yy出做法, ...

  3. python基础(3)

    使用list和tuple list Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. 比如,列出班里所有同学的名字,就可以用一个list表示: ...

  4. selenium - webdriver - cookie操作

    WebDriver提供了操作Cookie的相关方法,可以读取.添加和删除cookie信息. WebDriver操作cookie的方法: get_cookies(): 获得所有cookie信息. get ...

  5. ibatis中:org.springframework.jdbc.UncategorizedSQLException:异常

    SQL 查询语句异常,可能是你的查询语句写错了,或者是你的映射的类和或数据中与表不对应,检查你的映射配置文件.

  6. linux下应用crontab对mysql数据库进行定时备份

    linux下应用crontab对mysql数据库进行定时备份 @(编程) mysql数据库提供了备份命令mysqldump,可以结合crontab命令进行定时备份. 我写了一个mysqlbackup. ...

  7. CF745 D 交互题 思维 二进制分解

    现有一矩阵你可以做出不超过20个询问 每个询问 要求输入列号,可以询问矩阵上每行上你给的列之中的最小值让你最后输出该矩阵每行的不包括对角线位置上的最小值考虑询问如何分组,考虑二分,以二进制位来分组 那 ...

  8. CF832 D LCA倍增 裸

    有询问$a,b,c$,求a到c路径上,同时是a到b路径的点的个数.其中询问中的a,b,c可任意选择作为起点或终点,求一组询问中最大值. LCA用于计算树上点对间距离,对于一组询问求深度最大的点作为起点 ...

  9. Spring Boot 使用IntelliJ IDEA创建一个web开发实例(四)

    多环境配置 1. 在springBoot多环境配置文件名需要满足application-{profile}.properties的格式,其中{profile}对应你的环境标识,例如: (1)appli ...

  10. MongoDB常用方法

    一.查询 find方法 db.collection_name.find(); 查询所有的结果: select * from users; db.users.find(); 指定返回那些列(键): se ...