python 字典操作方法详解

一、总结

一句话总结:

字典就是键值对映射 ,像js和php中的键值对数组:{'name':'jamnes','age':'32'}

1、python字典的增删改查?

定义:info ={'name':'jamnes','age':'32','work':'basketplayer'}

增:info['sex'] = 'fale',改:info['age']='33'

删:pop():删除指定key的键值对:info.pop('work')

二、python 字典操作方法详解

转自或参考:python 字典操作方法详解 - 战争热诚 - 博客园

https://www.cnblogs.com/wj-1314/p/8421724.html

字典是一种通过名字或者关键字引用的得数据结构,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

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__);

# 

5 print(float.__hash__);

#

6 print(str.__hash__);

#

7 print(tuple.__hash__);

#

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 ,传入的顺序不一样,那么得到的字典是不一样的。

python字典操作的方法_python 字典操作方法详解相关推荐

  1. python文件操作的方法_python文件操作的方法介绍

    文件操作 1.open()函数 open()函数主要用于文件处理,一般分为下面3个过程:1.打开文件 2.操作文件 3.关闭文件 常见的格式示例:f = open('note.txt','r') f. ...

  2. python集合的操作_Python集合操作方法详解

    集合是无序的,天生不重复的数据组合,它的作用如下: 去重,即:把一个列表变成集合,就去重了 关系测试,即:测试两组集合的交集.并集和差集等 一.集合常用方法总结 二.定义 1.语法 >>& ...

  3. python中的items方法_Python 字典的items()方法和iteritems()方法有什么不同?【面试题详解】...

    今天爱分享给大家带来Python 字典的items()方法和iteritems()方法有什么不同?[面试题详解],希望能够帮助到大家. 字典是 Python 语言中唯一的映射类型.映射类型对象里哈希键 ...

  4. python编码问题无法复现_Python编码问题详解

    1. 基本概念 字符集(Character set) 解释:文字和符合的总称 常见字符集: Unicode字符集 ASCII字符集(Unicode子集) GB2312字符集 编码方法(Encoding ...

  5. python随机数程序源码_Python 实现随机数详解及实例代码

    Python3实现随机数 random是用于生成随机数的,我们可以利用它随机生成数字或者选择字符串. random.seed(x)改变随机数生成器的种子seed. 一般不必特别去设定seed,Pyth ...

  6. python字典的遍历方法_python字典遍历的方法有哪些?

    之前小编向大家介绍了dict函数和字典的创建过程(https://www.py.cn/jishu/jichu/21780.html),大家也都知道字典是python语言中经常使用的一种数据类型.字典是 ...

  7. python文件操作的方法_Python文件常用操作方法

    Python文件常用操作方法 一.对File对象常用操作方法: file= open(file, mode='r', buffering=-1, encoding=None, errors=None, ...

  8. python文件操作的方法_python中文件操作的基本方法

    在python中对一个文件进行操作,分为三大步:打开,操作,关闭 首先创建一个文件hello,里面内容为hello world 一.打开一个文件 #open('文件名或文件路径','操作模式',文件里 ...

  9. python特效集合_python 集合操作方法详解

    说集合之前,我们先说一个小例子,假设某公司有五个人喜欢打篮球,五个人喜欢打游戏,问即打游戏有打篮球 的人都有哪些? play_basketball = ['a','b','c','d','e'] pl ...

最新文章

  1. 机器人技术推动工业领域的数字革命
  2. 16.16. 部分排序
  3. 服务网格架构激活了容器网络管理—来自于服务网格创建者们的见解与展望
  4. K8s 工程师必懂的 10 种 Ingress 控制器
  5. 关闭linux防火墙及selinux的关闭
  6. PhpStorm配置SVN的完整方法
  7. 树状数组 + 位运算 LA 4013 A Sequence of Numbers
  8. 深入理解Java中的位操作
  9. Linux学习笔记-Linux下的设备文件
  10. 4.6 搭建深层神经网络块
  11. 升级python(2.7-3.6.2)
  12. Linux技术研究-基础篇(启动和自动挂载)
  13. Linux C/C++ —— intent 工具,time 命令
  14. LINUX下载编译OpenH264
  15. python接口自动化测试框架_Python3+Requests+Excel完整接口自动化测试框架的实现
  16. masm32 安装过程(记录)
  17. 和el-dialog同级的列表被push数据后for循环渲染失效,列表不更新
  18. B树中的M阶是什么含义?
  19. 网页加载慢,你知道几种原因?
  20. SOTA 激光相机标定velo2cam_calibration(待完成)

热门文章

  1. recovery相关的FAQ总结
  2. 图像特征-Harris角点检测
  3. 司铭宇讲师:销售人才培训之销售人员职业化素养提升
  4. 7-2 jmu-ds-顺序表区间元素删除 (15 分)
  5. JavaScript中清空数组
  6. 硅谷来信2-154-社交网络背后的逻辑
  7. qpython kivy_kivy库的安装
  8. 遇见未知的Saturn |准备篇:分布式定时任务调度系统技术解决方案(xxl-job、Elastic-job、Saturn)
  9. 羊城通通顺德 10月前顺德所有公交能刷
  10. UML的5类,10种模型图