Python基础----字典
文章目录
- 字典定义
- 1.1 字典的创建fromkeys、copy
- 1.2 字典的元素的增加update、setdefault
- 1.3 字典元素的删除clear、pop、popitem、del
- 1.4 字典元素的查找get、setdefault、in、not in
- 1.5 字典中元素的修改keys、values、items
- 1.6 Python字典常用内置函数
字典定义
字典是一种通过名字或者关键字引用的数据结构,其键可以是数字、字符串、元组(使用时要注意引号),这种结构类型也称之为映射。字典类型是Python中唯一內建的映射类型。
a、不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住。b、键必须不可变,所以可以用数字,字符串或元组充当,所以用列表就不行。
{键key:值value}
a = dir(dict)
print ('dict常用的方法:')
for i in a:if i[0] != '_':print (i)
dict常用的方法:
clear
copy
fromkeys
get
items
keys
pop
popitem
setdefault
update
values
1.1 字典的创建fromkeys、copy
dict.fromkeys(seq[, value]) # 多用于创建特定键值的初始化字典
seq -- 字典键值列表。value -- 可选参数, 设置键序列(seq)的值。
dict1 = dict.fromkeys('abcde')
print (dict1)
dict1 = dict.fromkeys('abcde',10)
print (dict1)
# 多用于创建特定键值的初始化字典
{'a': None, 'b': None, 'c': None, 'd': None, 'e': None}
{'a': 10, 'b': 10, 'c': 10, 'd': 10, 'e': 10}
# 浅拷贝,修改元素时是隔离的,删除列表里面的元素时没有隔离。
dict1 = {'one':1,'two':2,'three':3,'test':['a','b','c']}
dict2 = dict1.copy()
print (id(dict1),id(dict2))
dict2['test'] = ['a','b']
print (dict1,'\n',dict2)
print ('-*'*30)
dict2 = dict1.copy()
dict2['test'].remove('c')
print (dict1,'\n',dict2)
2780363573792 2780363734544
{'one': 1, 'two': 2, 'three': 3, 'test': ['a', 'b', 'c']} {'one': 1, 'two': 2, 'three': 3, 'test': ['a', 'b']}
-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
{'one': 1, 'two': 2, 'three': 3, 'test': ['a', 'b']} {'one': 1, 'two': 2, 'three': 3, 'test': ['a', 'b']}
# 深拷贝,两个字典完全隔离
from copy import deepcopy
dict1 = {'one':1,'two':2,'three':3,'test':['a','b','c']}
dict2 = deepcopy(dict1)
print (id(dict1),id(dict2))
dict2['test'] = ['a','b']
print (dict1,'\n',dict2)
print ('-*'*30)
dict2 = deepcopy(dict1)
dict2['test'].remove('c')
print (dict1,'\n',dict2)
2240627164720 2240627165368
{'one': 1, 'two': 2, 'three': 3, 'test': ['a', 'b', 'c']} {'one': 1, 'two': 2, 'three': 3, 'test': ['a', 'b']}
-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
{'one': 1, 'two': 2, 'three': 3, 'test': ['a', 'b', 'c']} {'one': 1, 'two': 2, 'three': 3, 'test': ['a', 'b']}
1.2 字典的元素的增加update、setdefault
dict.update()
把字典dict2的键/值对更新到dict1里,有相同的键会直接替换成 update 的值。
# dict.update()把字典dict2的键/值对更新到dict1里
dict1 = {'Name': 'Zara', 'Age': 7}
dict2 = {'Sex': 'female' }
dict1.update(dict2)
print (dict1)
{'Name': 'Zara', 'Age': 7, 'Sex': 'female'}
dict.get(key, default=None)
字典(Dictionary) get() 函数返回指定键的值,如果值不在字典中返回默认值
dict1 = {'Name': 'Zara', 'Age': 7}
print ("Value : %s" % dict1.get('Name', 'Hayden'))
print ("Value : %s" % dict1.get('Sex', 'male'))
print (dict1)
Value : Zara
Value : male
{'Name': 'Zara', 'Age': 7}
dict.setdefault(key,default=None)
get() 方法类似,如果字典中包含有给定键,则返回该键对应的值,否则返回为该键设置的值
dict1 = {'Name': 'Zara', 'Age': 7}
print ("Value : %s" % dict1.setdefault('Name', 'Hayden'))
print ("Value : %s" % dict1.setdefault('Sex', 'male'))
print (dict1)
Value : Zara
Value : male
{'Name': 'Zara', 'Age': 7, 'Sex': 'male'}
通过get与setdefault实例比较得知,get并没有把不在字典中的key添加进字典,只是取值,而setdefault不仅取值,而且把不在字典中的key添加进字典
1.3 字典元素的删除clear、pop、popitem、del
clear() 函数用于删除字典内所有元素
dict1 = {'Name': 'Zara', 'Age': 7}
dict1.clear()
print (dict1)
{}
pop() 方法删除字典给定键 key 及对应的值,返回值为被删除的值。key 值必须给出。 否则,返回 default 值
dict1 = {'Name': 'Zara', 'Age': 7}
dict1.pop('Name')
# print (dict1)
'Zara'
popitem() 方法随机返回并删除字典中的一对键和值。我测试的时候删除的都是末尾对,是不是已经不采用随机的方法了?
如果字典已经为空,却调用了此方法,就报出KeyError异常
dict1 = {'Name': 'Zara', 'Age': 7, 'Sex': 'female'}
dict1.popitem()
# print (dict1)
('Sex', 'female')
dict1 = {'Name': 'Zara', 'Age': 7, 'Sex': 'female'}
del dict1['Sex']
print (dict1)
{'Name': 'Zara', 'Age': 7}
1.4 字典元素的查找get、setdefault、in、not in
get() 函数返回指定键的值,如果值不在字典中返回默认值,但此默认值不会对原字典修改
dict1 = {'Name': 'Zara', 'Age': 7}
print ("Value : %s" % dict1.get('Name', 'Hayden'))
print ("Value : %s" % dict1.get('Sex', 'male'))
print (dict1)
Value : Zara
Value : male
{'Name': 'Zara', 'Age': 7}
setdefault()方法查找元素,不在字典中的元素会进行添加,前面已进行了比较。
in 和 not in,判断key是否在字典中
dict1 = {'Name': 'Zara', 'Age': 7}
if 'Name' in dict1.keys():print (dict1['Name'])
if 'Sex' not in dict1.keys():dict1.setdefault('Sex','female')print (dict1)
Zara
{'Name': 'Zara', 'Age': 7, 'Sex': 'female'}
1.5 字典中元素的修改keys、values、items
dict.keys()以列表返回一个字典所有的键
dict.values()以列表返回字典中的所有值
dict.items()以列表返回可遍历的(键, 值) 元组数组
dict1 = {'Name': 'Zara', 'Age': 7, 'Sex': 'female'}
print (dict1.keys())
print (dict1.values())
print (dict1.items())
dict_keys(['Name', 'Age', 'Sex'])
dict_values(['Zara', 7, 'female'])
dict_items([('Name', 'Zara'), ('Age', 7), ('Sex', 'female')])
1.6 Python字典常用内置函数
len(dict1),获取dict1的长度
del dict1 , 删除字典
dict1 = {'Name': 'Zara', 'Age': 7, 'Sex': 'female'}
dict2 = {'Name': 'Zara', 'Age': 7}
len(dict1)
del dict1
print (len(dict1))
---------------------------------------------------------------------------NameError Traceback (most recent call last)<ipython-input-180-30a8639c570d> in <module>()3 len(dict1)4 del dict1
----> 5 print (len(dict1))NameError: name 'dict1' is not defined
Python基础----字典相关推荐
- python基础—字典
阅读文本需要3分钟,不建议跳读 节目清单 字典是python中最重要的数据类型,字典由"键-值"对组成的集合,字典中的"值"通过"键"来引用 ...
- python基础-字典
python中操作字典,字典可变 访问,取值 dict1 = {'Name':'xm','Age':18,'Class':'First'}print("dict1['Name']:" ...
- 4道Python基础字典练习题
1.写代码,有如下字典,按照要求实现每一个功能,dic = {'k1':'v1','k2':'v2','k3':[11,22,33]} 请循环输出所有的 key dic = {'k1':'v1','k ...
- python基础——字典
字典是另一种可变容器模型,且可存储任意类型对象. 字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 d = {key1 : v ...
- 大学python教材实验七字典与集合答案_2018-08-28 day7 python基础 字典和集合(含作业)...
1.字典(dict) 一.字典是容器类型(序列 ),以键值对作为元素.字典里面存的数据全是以键值对的形式出现的 b/键值对----> 键:值(key:value) dict1 = {'key1' ...
- Python基础-字典(字典常用函数/操作/字典遍历)
字典是Python中除列表外,最灵活的数据类型,使用键值对存储数据,其中键必须是唯一的,值可以是任意类型 字典类型格式 student = {'键名1': 值1, '键名2': 值2, ...} # ...
- python字典和集合对象可以进行索引操作_建议收藏丨纯知识点:Python基础—字典、集合操作大全...
本文为纯知识点,预计需阅读二十分钟 数据结构基本上就是--它们是可以处理一些 数据 的 结构 .或者说,它们是用来存储一组相关数据的. 在Python中有四种内建的数据结构--列表.元组和字典,集合. ...
- python基础---字典的基本操作
1.字典的定义 在Python中,字典是一系列键值对,每个键与每个值关联. 键必须是唯一的,值不一定. # 表示 dic = {"name":"妮妮",&quo ...
- Python基础——字典中由value查key的几点说明
众所周知,字典dict最大的好处就是查找或插入的速度极快,并且不想列表list一样,随着key的增加越来越复杂.但是dict需要占用较大的内存空间,换句话说,字典dict是以空间换速度.详细请见如下示 ...
最新文章
- linux 特殊符号(转)
- linux中典型文件档案分析
- mysql 两列计数_MySQL在两列上计算唯一值,并为每列连接这些计数
- 【Android 异步操作】AsyncTask 异步任务 ( AsyncTask 异步任务执行方法 execute 方法相关源码解析 )
- asp.net防类似DDOS攻击(CC攻击)代码
- android 系统源码调试 局部变量值_如何方便快速的整编Android 9.0系统源码?
- 自己动手架设linux下Web服务器(图)2
- ubuntu16.04升级 vim 8.0
- 滴滴否认柳青计划卸任:目前正积极全面配合网络安全审查
- linux安装配置java,Linux 安装配置 java 环境
- JavaScript unshift()函数移入数据到数组第一位
- SVN Server修改端口与SVN修改版本库URL
- cad中lisp文件给恶作剧_AutoCAD小秘密062:紧急插播,关于LISP的病毒防治
- 公众号获取access_token失败
- XUPT_ACM2021寒假训练第一周练习记录
- 用java怎么写三角形图案_Java 打印三角形图案
- 第12集 副词及其他
- 数据结构 day07 基础知识学习 (二叉树 的 前中后遍历 ,插入节点,删除叶子节点, 二叉树的节点个数 )
- Hackcity 参赛必读
- 推荐一个 SpringBoot 2.x + vue 实现的个人支付宝、微信支付系统
热门文章
- ThinkPHP连接sqlserver,错误11001
- volatile关键字(转)
- 快速集成iOS基于RTMP的视频推流
- iOS开发——自定义下拉框
- MacBook设置终端命令行的颜色高亮显示
- 利用空余时间在完成一个Outlook框架控件,还有些Bug,完善中
- java.util.concurrent.*下的常见类你了解多少?
- 接口文档生成工具apipost
- java继承的作用_Java继承概述以及Java继承案例和继承的好处
- 计算机组成原理脱机运算器实验数据,实验三:脱机运算器实验报告.pdf