文章目录

  • 字典定义
    • 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基础----字典相关推荐

  1. python基础—字典

    阅读文本需要3分钟,不建议跳读 节目清单 字典是python中最重要的数据类型,字典由"键-值"对组成的集合,字典中的"值"通过"键"来引用 ...

  2. python基础-字典

    python中操作字典,字典可变 访问,取值 dict1 = {'Name':'xm','Age':18,'Class':'First'}print("dict1['Name']:" ...

  3. 4道Python基础字典练习题

    1.写代码,有如下字典,按照要求实现每一个功能,dic = {'k1':'v1','k2':'v2','k3':[11,22,33]} 请循环输出所有的 key dic = {'k1':'v1','k ...

  4. python基础——字典

    字典是另一种可变容器模型,且可存储任意类型对象. 字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 d = {key1 : v ...

  5. 大学python教材实验七字典与集合答案_2018-08-28 day7 python基础 字典和集合(含作业)...

    1.字典(dict) 一.字典是容器类型(序列 ),以键值对作为元素.字典里面存的数据全是以键值对的形式出现的 b/键值对----> 键:值(key:value) dict1 = {'key1' ...

  6. Python基础-字典(字典常用函数/操作/字典遍历)

    字典是Python中除列表外,最灵活的数据类型,使用键值对存储数据,其中键必须是唯一的,值可以是任意类型 字典类型格式 student = {'键名1': 值1, '键名2': 值2, ...} # ...

  7. python字典和集合对象可以进行索引操作_建议收藏丨纯知识点:Python基础—字典、集合操作大全...

    本文为纯知识点,预计需阅读二十分钟 数据结构基本上就是--它们是可以处理一些 数据 的 结构 .或者说,它们是用来存储一组相关数据的. 在Python中有四种内建的数据结构--列表.元组和字典,集合. ...

  8. python基础---字典的基本操作

    1.字典的定义 在Python中,字典是一系列键值对,每个键与每个值关联. 键必须是唯一的,值不一定. # 表示 dic = {"name":"妮妮",&quo ...

  9. Python基础——字典中由value查key的几点说明

    众所周知,字典dict最大的好处就是查找或插入的速度极快,并且不想列表list一样,随着key的增加越来越复杂.但是dict需要占用较大的内存空间,换句话说,字典dict是以空间换速度.详细请见如下示 ...

最新文章

  1. linux 特殊符号(转)
  2. linux中典型文件档案分析
  3. mysql 两列计数_MySQL在两列上计算唯一值,并为每列连接这些计数
  4. 【Android 异步操作】AsyncTask 异步任务 ( AsyncTask 异步任务执行方法 execute 方法相关源码解析 )
  5. asp.net防类似DDOS攻击(CC攻击)代码
  6. android 系统源码调试 局部变量值_如何方便快速的整编Android 9.0系统源码?
  7. 自己动手架设linux下Web服务器(图)2
  8. ubuntu16.04升级 vim 8.0
  9. 滴滴否认柳青计划卸任:目前正积极全面配合网络安全审查
  10. linux安装配置java,Linux 安装配置 java 环境
  11. JavaScript unshift()函数移入数据到数组第一位
  12. SVN Server修改端口与SVN修改版本库URL
  13. cad中lisp文件给恶作剧_AutoCAD小秘密062:紧急插播,关于LISP的病毒防治
  14. 公众号获取access_token失败
  15. XUPT_ACM2021寒假训练第一周练习记录
  16. 用java怎么写三角形图案_Java 打印三角形图案
  17. 第12集 副词及其他
  18. 数据结构 day07 基础知识学习 (二叉树 的 前中后遍历 ,插入节点,删除叶子节点, 二叉树的节点个数 )
  19. Hackcity 参赛必读
  20. 推荐一个 SpringBoot 2.x + vue 实现的个人支付宝、微信支付系统

热门文章

  1. ThinkPHP连接sqlserver,错误11001
  2. volatile关键字(转)
  3. 快速集成iOS基于RTMP的视频推流
  4. iOS开发——自定义下拉框
  5. MacBook设置终端命令行的颜色高亮显示
  6. 利用空余时间在完成一个Outlook框架控件,还有些Bug,完善中
  7. java.util.concurrent.*下的常见类你了解多少?
  8. 接口文档生成工具apipost
  9. java继承的作用_Java继承概述以及Java继承案例和继承的好处
  10. 计算机组成原理脱机运算器实验数据,实验三:脱机运算器实验报告.pdf