[ python ] 字典的使用
数据类型划分:
可变数据类型: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 ] 字典的使用的更多相关文章
- Python字典和集合
Python字典操作与遍历: 1.http://www.cnblogs.com/rubylouvre/archive/2011/06/19/2084739.html 2.http://5iqiong. ...
- python 字典排序 关于sort()、reversed()、sorted()
一.Python的排序 1.reversed() 这个很好理解,reversed英文意思就是:adj. 颠倒的:相反的:(判决等)撤销的 print list(reversed(['dream','a ...
- python字典中的元素类型
python字典默认的是string item={"browser " : 'webdriver.irefox()', 'url' : 'http://xxx.com'} 如果这样 ...
- python字典copy()方法
python 字典的copy()方法表面看就是深copy啊,明显独立 d = {'a':1, 'b':2} c = d.copy() print('d=%s c=%s' % (d, c)) Code1 ...
- python 字典实现类似c的switch case
#python 字典实现类似c的switch def print_hi(): print('hi') def print_hello(): print('hello') def print_goodb ...
- python字典的常用操作方法
Python字典是另一种可变容器模型(无序),且可存储任意类型对象,如字符串.数字.元组等其他容器模型.本文章主要介绍Python中字典(Dict)的详解操作方法,包含创建.访问.删除.其它操作等,需 ...
- Python 字典(Dictionary)操作详解
Python 字典(Dictionary)的详细操作方法. Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串.数字.元组等其他容器模型. 一.创建字典 字典由键和对应值成对组成.字 ...
- Python 字典(Dictionary) get()方法
描述 Python 字典(Dictionary) get() 函数返回指定键的值,如果值不在字典中返回默认值. 语法 get()方法语法: dict.get(key, default=None) 参数 ...
- Python 字典(Dictionary) setdefault()方法
描述 Python 字典(Dictionary) setdefault() 函数和get()方法类似, 如果键不已经存在于字典中,将会添加键并将值设为默认值. 语法 setdefault()方法语法: ...
- python 字典内置方法get应用
python字典内置方法get应用,如果我们需要获取字典值的话,我们有两种方法,一个是通过dict['key'],另外一个就是dict.get()方法. 今天给大家分享的就是字典的get()方法. 这 ...
随机推荐
- Keywords Search HDU - 2222(ac自动机板题。。)
求一个字符串上有多少个匹配的单词 看着卿学姐的板子写的 指针形式: #include <iostream> #include <cstdio> #include <sst ...
- 十大最佳Leap Motion体感控制器应用
十大最佳Leap Motion体感控制器应用 Leap Motion Controller也许还没有准备好大规模的发售,但是毫无疑问,这款小巧的动作捕捉器是我们见过的最酷的设备之一.这款设备的硬件 ...
- 70路小报:用PV和UV作为网站衡量指标已经过时
方法]投资人呼吁:PV和UV不应该再作为产品衡量指标 风险投资机构Andreessen Horowitz近日一直反对再用传统的网站衡量指标去评价互联网产品,比如PV和UV,甚至包括应用的下载量. 他们 ...
- git用户名和邮箱配置
1. 设置全局用户名和邮箱 git config --global user.name "xxx" git config --global user.email "xxx ...
- 框架----Django之Ajax全套实例(原生AJAX,jQuery Ajax,“伪”AJAX,JSONP,CORS)
一.原生AJAX,jQuery Ajax,“伪”AJAX,JSONP 1. 浏览器访问 http://127.0.0.1:8000/index/ http://127.0.0.1:8000/fake_ ...
- 【单调队列】【P3957】 跳房子
传送门 Description 跳房子,也叫跳飞机,是一种世界性的儿童游戏,也是中国民间传统的体育游戏之一. 跳房子的游戏规则如下: 在地面上确定一个起点,然后在起点右侧画 $n$ 个格子,这些格子都 ...
- VMware 与Ubuntu通过samba服务器共享文件
Linux和windows在虚拟机下文件共享有很多种方式,常用的有使用VMware Tools共享和Samba服务器进行共享,使用VMware Tools这里就不说了,我使用的是Samba服务器. 其 ...
- advanced bash shell guide读书笔记
http://note.youdao.com/noteshare?id=fc23a679849b4627d131d3ef07c74a71
- 题解【bzoj3529 [SDOI2014]数表】
Description \(T\) 组询问,定义 \(F(n)=\sum\limits_{d|n}d\).每次给出 \(n,m,a\) 求 \[\sum\limits_{i=1,j=1,F(\gcd( ...
- 轮廓问题/Outline Problem-->改进的算法及时间复杂度分析
前面写过一篇关于轮廓算法的文章,是把合并建筑和合并轮廓是分开对待的,并且为了使轮廓合并的时候算法简单,对x坐标使用了double类型,然后对整形的x坐标数据进行合并.这样做是为了使得需找拐点的算法容易 ...