python 字典操作方法详解
字典是一种通过名字或者关键字引用的得数据结构,key 类型需要时被哈希,其键可以是数字、字符串、元组,这种结构类型也称之为映射。字典类型是Python中唯一內建的映射类型。
注意,浮点数比较很不精确,因此千万不要用浮点数作为key!
python字典包含了11个内置方法,具体如下:

| 序 号 | 函数 | 描述 |
| 1 | clear(self) | 删除字典内所有的元素 |
| 2 | copy(self) | 返回一个字典的浅copy ,俗称赋值 |
| 3 | fromkeys(*args,**kwargs) | 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值 |
| 4 | get(self,k,d=None) | 返回指定键的值,如果值不在字典中返回default值 |
| 5 | items(self) | 以列表返回可遍历的(键, 值) 元组数组 |
| 6 | keys(self) | 以列表返回一个字典所有的键 |
| 7 | pop(self,k,d=None) | 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值 |
| 8 | popitem(self) | 随机返回并删除字典中的一对键和值 |
| 9 | setdefault(self,k,d=None) | 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default |
| 10 | update(self,E=None,**F) | 把self的东西更新到外面字典 |
| 11 | values(self) | 以列表返回字典中的所有值 |
具体举例子解释如下:
1,字典的键不能是list类型:
list = [1,2,3,4]
info2 = {list:'number'} 结果:
Traceback (most recent call last):
File "D:/字典.py", line 2, in <module>
info2 = {list:'number'}
TypeError: unhashable type: 'list'
2,list/set/dict 均不可被哈希 ,int、float、str、tuple:是可以哈希的
1 list.__hash__;
#结果为None
2 set.__hash__;
#结果为None
3 dict.__hash__;
#结果为None
4 print(int.__hash__);
# <slot wrapper '__hash__' of 'int' objects>
5 print(float.__hash__);
#<slot wrapper '__hash__' of 'float' objects>
6 print(str.__hash__);
#<slot wrapper '__hash__' of 'str' objects>
7 print(tuple.__hash__);
#<slot wrapper '__hash__' of 'tuple' objects>
3,增
info ={'name':'jamnes','age':'32','work':'basketplayer'}
info['sex'] = 'fale'
print(info)
结果:
{'name': 'jamnes', 'age': '32', 'work': 'basketplayer', 'sex': 'fale'}
4,删
4-1 pop():删除指定key的键值对
info ={'name':'jamnes','age':'32','work':'basketplayer'}
info.pop('work')
print(info)
结果:
{'name': 'jamnes', 'age': '32'}
4-2 clear():清除所有的键值对
info ={'name':'jamnes','age':'32','work':'basketplayer'}
info.clear()
print(info)
结果:
{}
4-3setdefault():删除指定的元素,如果没有,则返回none
info ={'name':'jamnes','age':'32','work':'basketplayer'}
info.setdefault('son')
print(info)
结果:
None
5,改
info ={'name':'jamnes','age':'32','work':'basketplayer'}
info['age']='33'
print(info)
结果:
{'name': 'jamnes', 'age': '33', 'work': 'basketplayer'}
6,查
6-1 get():通过给定的key,查找对应的value,如果给定的可以在字典中无,则返回None
info ={'name':'jamnes','age':'32','work':'basketplayer'}
a =info.get('age')
print(a)
结果:
32
6-2 setdefault():通过给定的key,查找对应的value,如果给定的可以在字典中无,则返回None,
同时在字典中增加'test': None键值对
info ={'name':'jamnes','age':'32','work':'basketplayer'}
a =info.setdefault('age')
print(a)
print(info)
b =info.setdefault('sex')
print(b)
print(info)
结果:
32
{'name': 'jamnes', 'age': '32', 'work': 'basketplayer'}
None
{'name': 'jamnes', 'age': '32', 'work': 'basketplayer', 'sex': None}
7,更新
7-1update()=
一,更新里面有的信息,就是改变
info ={'name':'jamnes','age':'32','work':'basketplayer'}
info2 = {'name':'wade','age':'33','work':'basketplayer'}
info.update(info2)
print(info)
结果:
{'name':'wade','age':'33','work':'basketplayer'} 二,更新里面没有的信息,就是添加
info ={'name':'jamnes','age':'32','work':'basketplayer'}
info2 = {'honor':'3 champions'}
info.update(info2)
print(info)
结果:
{'name': 'jamnes', 'age': '32', 'work': 'basketplayer', 'honor': '3 champions'}
8,返回键,值,键值对
keys():以列表(list)返回字典中的所有键(key),字典是无序的,所以这个list返回的不是定义字典的顺序
values():以列表(list)返回字典中的所有值,这个list的顺序跟keys()返回的list顺序是一一对应的
items():以列表(list)返回可遍历的(键, 值) 元组数组,这个tuple的list包含了dictionary的所有数据
dict ={'k1':'v1','k2':'v2','k3':'v3'}
#1,请循环遍历除所有的key
for keys in dict.keys():
print(keys)
#遍历出所有的value
for value in dict.values():
print(value)
#遍历出
for key,value in dict.items():
print(key+':'+value)
#结果:
k1
k2
k3
v1
v2
v3
k1:v1
k2:v2
k3:v3
9,练习字典
dic={'k1':"v1","k2":"v2","k3":[11,22,33]}
a.请循环输出所有的key
b.请循环输出所有的value
c.请循环输出所有的key和value
d.请在字典中添加一个键值对,"k4":"v4",输出添加后的字典
e.请在修改字典中“k1”对应的值为“alex”,输出修改后的字典
f.请在k3对应的值中追加一个元素44,输出修改后的字典
g.请在k3对应的值的第1个位置插入个元素18,输出修改后的字典
dic={'k1':"v1","k2":"v2","k3":[11,22,33]}
# a.请循环输出所有的key
for i in dic :
print(i)
for i in dic.keys():
print(i)
# b.请循环输出所有的value
for i in dic.values():
print(i)
c.请循环输出所有的key和value
for i,j in dic.items():
print(i,j)
# d.请在字典中添加一个键值对,"k4":"v4",输出添加后的字典
dic2 = {'k4':'v4'}
dic.update(dic2)
print(dic)
dic['k4'] = 'v4'
print(dic)
# e.请在修改字典中“k1”对应的值为“alex”,输出修改后的字典
dic['k1'] ='alex'
print(dic)
f.请在k3对应的值中追加一个元素44,输出修改后的字典
dic['k3'].append(44)
print(dic)
# g.请在k3对应的值的第1个位置插入个元素18,输出修改后的字典
dic['k3'].insert(0,18)
print(dic)
10,根据字典的键值进行排序
反序: reverse = True
mylist = ['学习', '工作', '玩耍', '学习', '工作', '工作']
print(mylist)
# list_element 是另外一个列表,里面的内容是list_element里面的无重复项
myset = set(mylist) mydict = {} for item in myset:
res = mylist.count(item)
sample = {item: res}
# print(res)
# print("the %d has found %d" % (item, mylist.count(item)))
mydict.update(sample)
print(mydict)
print(sorted(mydict.items(), key=lambda mydict:mydict[1],reverse=True))
11,OrderedDict 的使用
在Python中,dict这个数据结构由于hash的特性,是无序的,这在有时候会给我们带来一些麻烦,幸运的时,在collections模块中为我们提供了 OrderedDict ,当你需要获取一个有序的字典对象时,试用它即可。
python中的字典(dict)对象可使用“键”,“值” 对的形式存取值,但默认的内置类型字典中的元素是无序的。Collections模块下的OrderedDict类实现了对字典的排序,OrderedDict是dict的一个子类,实现了对字典排序的功能,下面看一下两者数据类型的对比。
from collections import OrderedDict
print('Normal Dictionary:')
d = {}
d['name'] = 'v1'
d['age'] = 'v2'
d['job'] = 'v3'
d['address'] = 'v4'
d1 = {}
d1['job'] = 'v3'
d1['address'] = 'v4'
d1['name'] = 'v1'
d1['age'] = 'v2'
print(d)
print(d1)
print(d == d1)
print('OrderedDict:')
d2 = OrderedDict()
d2['name'] = 'v1'
d2['age'] = 'v2'
d2['job'] = 'v3'
d3 = OrderedDict()
d3['job'] = 'v3'
d3['age'] = 'v2'
d3['name'] = 'v1'
print(d2)
print(d3)
print(d2 == d3)
输出结果:
Normal Dictionary:
{'name': 'v1', 'age': 'v2', 'job': 'v3', 'address': 'v4'}
{'job': 'v3', 'address': 'v4', 'name': 'v1', 'age': 'v2'}
True
OrderedDict:
OrderedDict([('name', 'v1'), ('age', 'v2'), ('job', 'v3')])
OrderedDict([('job', 'v3'), ('age', 'v2'), ('name', 'v1')]) False
从结果来看,如果是普通的字典,即使传入的顺序不一样,但是依然是相同的字典;如果是OrderedDict ,传入的顺序不一样,那么得到的字典是不一样的。
集合操作方法详解,请看下面博客:http://www.cnblogs.com/wj-1314/p/8423273.html
字符串操作方法详解,请看下面博客:http://www.cnblogs.com/wj-1314/p/8419009.html
列表操作方法详解,请看下面博客:http://www.cnblogs.com/wj-1314/p/8433116.html
python 字典操作方法详解的更多相关文章
- python字典操作方法详解
前言 字典是一种通过名字或者关键字引用的得数据结构,key 类型需要时被哈希,其键可以是数字.字符串.元组,这种结构类型也称之为映射.字典类型是Python中唯一內建的映射类型. 注意,浮点数比较很不 ...
- python 字符串操作方法详解
字符串序列用于表示和存储文本,python中字符串是不可变对象.字符串是一个有序的字符的集合,用于存储和表示基本的文本信息,一对单,双或三引号中间包含的内容称之为字符串.其中三引号可以由多行组成,编写 ...
- python 列表操作方法详解
列表是Python中最基本的数据结构,列表是最常用的Python数据类型,列表是一个数据的集合,集合内可以放任何数据类型,可对集合方便的增删改查操作.Python已经内置确定序列的长度以及确定最大和最 ...
- python 集合操作方法详解
说集合之前,我们先说一个小例子,假设某公司有五个人喜欢打篮球,五个人喜欢打游戏,问即打游戏有打篮球 的人都有哪些? play_basketball = ['a','b','c','d','e'] pl ...
- Python - 字典(dict) 详解 及 代码
字典(dict) 详解 及 代码 本文地址: http://blog.csdn.net/caroline_wendy/article/details/17291329 字典(dict)是表示映射的数据 ...
- Python——字典dict()详解
一.字典 字典是Python提供的一种数据类型,用于存放有映射关系的数据,字典相当于两组数据,其中一组是key,是关键数据(程序对字典的操作都是基于key),另一组数据是value,可以通过key来进 ...
- python字符串操作方法详解
字符串 字符串序列用于表示和存储文本,python中字符串是不可变对象.字符串是一个有序的字符的集合,用于存储和表示基本的文本信息,一对单,双或三引号中间包含的内容称之为字符串.其中三引号可以由多 ...
- python列表操作方法详解
列表 列表是Python中最基本的数据结构,列表是最常用的Python数据类型,列表是一个数据的集合,集合内可以放任何数据类型,可对集合方便的增删改查操作.Python已经内置确定序列的长度以及确 ...
- python集合操作方法详解
前言 说集合之前,我们先说一个小例子,假设某公司有五个人喜欢打篮球,五个人喜欢打游戏,问即打游戏有打篮球的人都有哪些? play_basketball = ['a','b','c','d','e'] ...
随机推荐
- Python3基础1
Python介绍及特点 发展史 Python 2 or 3? 安装Python3 Hello World程序 变量 用户输入 模块初识 .pyc是个什么? 数据类型初识 数据运算 表达式if ...e ...
- spring mvc的跨域解决方案
什么是跨域 一句话:同一个ip.同一个网络协议.同一个端口,三者都满足就是同一个域,否则就是跨域. 为什么非得跨域 基于两个方面: a. web应用本身是部署在不同的服务器上 b.基于开发的角度 -- ...
- 初识mysql学习笔记
使用VMVirtualBox导入Ubuntu后,可以通过sudo apt-get install mysql-server命令下载mysql. 在学习过程中,我遇到了连接不上Xshell的问题.最终在 ...
- Linux(常用命令) 中常用的压缩丶解压缩格式命令和参数详解
Linux中常用的压缩格式后缀名有:①.zip ②.gz ③.bz2 ④.tar.gz ⑤.tar.bz2 ①.zip后缀名格式 1.压缩 语法: ①zip 压缩文件名 源文件 (压缩文件) ...
- python数据处理之基本函数
一.基本函数篇 1)python strip()函数介绍 函数原型 声明:s为字符串,rm为要删除的字符序列 s.strip(rm) 删除s字符串中开头.结尾处,位于 rm删除序列的字符 s.lstr ...
- Codeforces Round #326 (Div. 2) B
1.每一个合数都可以由若干个素数相乘而得到 2.质因数知识 :求一个数因数的个数等于它的每个质因数的次数加一的和相乘的积因为质因数可以不用,所以要加一.例如6=2x3,两个质因数都是一次,如果两个质因 ...
- Linux下C++/C的编译调试
这几天因为任务的原因我需要在ubuntu下编写程序.因此恶补了许多linux程序编写的知识.我分以下几个方面总结我所学的知识. gcc,g++,make命令的使用 gdb 调试 VScode的使用 c ...
- 安装Ubuntu16.04失败
原本安装的是Ubuntu14,但是在使用caffe时总是出错,所以干脆将Ubuntu从14升级到16,结果整出一堆麻烦.在解决这些麻烦的过程也学习了不少系统启动的细节.印证了那句话"如何没有 ...
- Mybatis中是否需要依赖配置文件的名称要和mapper接口的名称一致 params错误
一:当核心配置文件mapper标签下以resource形式指向依赖配置文件时,不需要 这样就可以加载到其相应的依赖配置文件通过namespace找到其相应的方法 二:如果mapper标签下以packa ...
- jdbc、Mybatis插入数据主键回显的实现方法
插入数据的时候,往往需要获取主键值.但是有时候主键是自增长的那么,就不太适用手动添加主键值了,此时需要一种可以回显主键参数的方法, 下面以jdbc.mybatis的实现举例 此时使用的是jdbc的话或 ...