字典

字典是另一种可变容器模型,且可存储任意类型对象。

1.创建字典

字典由键和对应值成对组成。每个键与值之间用:隔开,每对之间逗号隔开。

每个键应当互不相同,值可以相同。若同时出现两个相同的键,则后面的那个会被记住。

键必须是不可变的。

dict1 = {'A': '', 'B': '', 'C': 3}

2.访问字典

dict1 = {'A': '', 'B': '', 'C': 3}
print(dict1['A'])
输出:1

如果访问字典中没有的键,则会报错。

3.修改字典

dict1 = {'A': '', 'B': '', 'C': 3}
dict1['C']=33#修改字典中的值
dict1['D']=4#若是字典中没有的,则自动添加到字典中
del dict1['A']#删除字典内容
print(dict1)
输出:
{'B': '', 'C': 33, 'D': 4}

4.字典内置函数及方法

4.1 fromkeys(seq,val)

fromkeys方法有两个参数,seq中的元素作为字典的键,val为字典所有键对应的初始值(注意是所有)。

返回值为一个新的字典。

seq=['A','B','C']
dict2=dict.fromkeys(seq)
dict3=dict.fromkeys(seq,1)
dict4=dict.fromkeys(seq,[1,2,3])
print(dict2,dict3,dict4)
输出:
{'A': None, 'B': None, 'C': None} {'A': 1, 'B': 1, 'C': 1} {'A': [1, 2, 3], 'B': [1, 2, 3], 'C': [1, 2, 3]}

4.2 keys,values,items

dict5={'A': '', 'B': '', 'C': '3'} 

for eachKey in dict5.keys(): 
  print(eachKey)
for eachValue in dict5.values():
  print(eachValue)
for eachItem in dict5.items():
  print(eachItem)
输出:
B C D
1 2 3
('A', '') ('B', '') ('C', '')

4.3 get(key, default=None)

get() 函数返回指定键的值,如果值不在字典中返回默认值。

dict6={'A': '', 'B': '', 'C': ''}
print(dict6.get('D'))
print(dict6.get('D',"不存在!"))
print(dict6.get('C',"不存在!"))
输出:
None
不存在!
3

4.4 clear()

clear()清空字典所有内容。建议全部使用clear(),否则字典内容还可以用其他方式访问到。

dict7={'A': '', 'B': '', 'C': ''}
dict7.clear()
print(dict7)
输出:{}

4.5 copy()

copy()返回一个字典的浅拷贝。

此处之区别浅拷贝和赋值,有关深拷贝的内容日后再谈。

拷贝父对象,不拷贝父对象内部的子对象。赋值就是对象的引用。

因此,拷贝后对原字典的内部的子对象(方括号[]内元素)进行操作时,浅拷贝内容会受操作影响而变化。

a={'A': [1,2], 'B': '', 'C': ''}
b=a.copy()
c=a
a['D']=4
print(a,b,c)
a['A'].append(3)
print(a,b,c)
输出:
{'A': [1, 2], 'B': '', 'C': '', 'D': 4} {'A': [1, 2], 'B': '', 'C': ''} {'A': [1, 2], 'B': '', 'C': '', 'D': 4}
{'A': [1, 2, 3], 'B': '', 'C': '', 'D': 4} {'A': [1, 2, 3], 'B': '', 'C': ''} {'A': [1, 2, 3], 'B': '', 'C': '', 'D': 4}

可以看到,对父对象a的子对象未改变时,b不会改变,但是c会跟着改变。当a的子对象改变时,b,c都会跟着改变。

4.6 pop()

dict8={'A': '', 'B': '', 'C': ''}
dict8.pop('B')
print(dict8)
输出:
{'A': '', 'C': ''}

4.7 popitem()

popitem()函数随机返回并删除字典中的一对键和值。

dict9={'A': '', 'B': '', 'C': ''}
dict9.popitem()
print(dict9)
输出:
{'A': '', 'B': ''}

4.8 setdefault()

setdefault(key, default=None) 函数和get() 方法类似, 如果键不存在于字典中,将会添加键并将值设为默认值。

dict10={'A': '', 'B': '', 'C': ''}
dict10.setdefault('D','')
print(dict10)
print(dict10.setdefault('C'))
输出:
{'A': '', 'B': '', 'C': '', 'D': ''}
3

4.9 update()

dict=update(dict1) 函数把字典dict1的键/值对更新到dict里。

dict11={'E':'','A':''}
dict10.update(dict11)
print(dict10)
输出:
{'A': '', 'B': '', 'C': '', 'D': '', 'E': ''}

Python学习——字典的更多相关文章

  1. Python学习--字典

    在Python中通过名字来引用值的数据结构称为映射(mapping).字典是Python中唯一内建(Python解释器本身支持,不需要import)的映射类型.字典中的值没有特殊的顺序,都存储在一个特 ...

  2. python学习——字典和集合

    一.字典 1)字典介绍 字典是一种通过名字或者关键字引用的得数据结构,其键可以是数字.字符串.元组,这种不可变的结构类型也称之为映射.字典类型是Python中唯一內建的映射类型. 1)字典操作 &qu ...

  3. Python学习字典.基础三

    元组   Python的元组与列表类似,不同之处在于元组的元素不能修改. 元组使用小括号,列表使用方括号. 元组中要定义的元组中只有一个元素需要再元素后面加逗号,用来消除数学歧义.例 t=(1,)   ...

  4. Python学习————字典的增删改查

    增加:dic1['KEY'] = value -->若之前有KEY,则会覆盖.若没有KEY,则新增至尾处dic.setdefault('KEY',value/None) --->若之前有K ...

  5. Python学习-字典练习:简单通讯录

    功能要求: 查询联系人,输入姓名,可以查询当前通讯录里面的联系人信息,若联系人存在,则输出联系人信息,若不存在,则告知 插入联系人,可以向通讯录中新建联系人,若联系人已经存在,则询问是否修改联系人信息 ...

  6. Python学习基础笔记(全)

    换博客了,还是csdn好一些. Python学习基础笔记 1.Python学习-linux下Python3的安装 2.Python学习-数据类型.运算符.条件语句 3.Python学习-循环语句 4. ...

  7. python学习笔记整理——字典

    python学习笔记整理 数据结构--字典 无序的 {键:值} 对集合 用于查询的方法 len(d) Return the number of items in the dictionary d. 返 ...

  8. python学习笔记(一)元组,序列,字典

    python学习笔记(一)元组,序列,字典

  9. Python学习笔记——基础篇2【第三周】——计数器、有序字典、元组、单(双)向队列、深浅拷贝、函数、装饰器

    目录 1.Python计数器Counter 2.Python有序字典OrderredDict 3.Python默认字典default 4.python可命名元组namedtuple 5.Python双 ...

随机推荐

  1. bzoj4818

    http://www.lydsy.com/JudgeOnline/problem.php?id=4818 矩阵快速幂+dp 首先我们来写一个dp dp[i][j]:选到第i个数,和为j,复杂度nm,不 ...

  2. Line: 220 - com/opensymphony/xwork2/spring/SpringObjectFactory.java:220:-1

    转自:http://blog.51cto.com/alinazh/1276363 在启动tomcat的时候出现错误: Line: 220 - com/opensymphony/xwork2/sprin ...

  3. Flask-SQLAlchemy - 不使用外键连表查询。记得常回来看我

    前言 相比于 Django 的 ORM ,SQLAlchemy "不依靠外键进行跨表联查" 的解决方案就比较多. 没啥好说的,只能怪自己学艺不精..  _(:з」∠)_ 解决办法 ...

  4. iPhone各尺寸 app界面设计尺寸规范

    ip6: 375 * 667 pt @2x   ~ 750 x 1334 ip6+: 414 * 736 pt @3x ~ 1242 x 2208 ip5: 320 * 568 pt  @2x ~ 6 ...

  5. python 操作数据库时遇到的错误

       pymysql.err.ProgrammingError: (1064, "You have an error in your SQL syntax; ch    之前的写法是从文件里 ...

  6. SQL 经典语句大全

    原地址:http://www.cnblogs.com/yubinfeng/archive/2010/11/02/1867386.html 一.基础 1.说明:创建数据库 CREATE DATABASE ...

  7. Asp.NET 知识点总结(一)

    1.简述 private. protected. public. internal 修饰符的访问权限. 答 . private : 私有类,私有成员, 在类的内部才可以访问. protected : ...

  8. Uva 10766 Organising the Organisation (Matrix_tree 生成树计数)

    题目描述: 一个由n个部门组成的公司现在需要分层,但是由于员工间的一些小小矛盾,使得他们并不愿意做上下级,问在满足他们要求以后有多少种分层的方案数? 解题思路: 生成树计数模板题,建立Kirchhof ...

  9. 暴力/思维 HDOJ 5386 Cover

    题目传送门 /* 题意:给出刷墙的所有的方法,求一种顺序,使得原矩阵刷成目标矩阵 暴力:(题解)我们只要每次找一行或一列颜色除了0都相同的,然后如果有对应的操作,就把这行这列都赋值成0即可 */ /* ...

  10. 思维+multiset ZOJ Monthly, July 2015 - H Twelves Monkeys

    题目传送门 /* 题意:n个时刻点,m次时光穿梭,告诉的起点和终点,q次询问,每次询问t时刻t之前有多少时刻点是可以通过两种不同的路径到达 思维:对于当前p时间,从现在到未来穿越到过去的是有效的值,排 ...