Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。

>>> person = {"name":"keven","age":15,"gender":"male"}
>>> person['name']
'keven'
>>> type(person)
<type 'dict'>

字典可以原地修改,即它是可变的。

>>> dict1={}
>>> id(dict1)
139736380198256
>>> dict1["name"] = "Keven"
>>> id(dict1)
139736380198256
>>> dict1
{'name': 'Keven'}

利用元组在建构字典,方法如下:

>>> name = (["first","Google"],["second","Yahoo"])
>>> website = dict(name)
>>> website
{'second': 'Yahoo', 'first': 'Google'}

或者用这样的方法:

>>> ad = dict(name="keven", age=42)
>>> ad
{'age': 42, 'name': 'keven‘

基本操作

• len(d),返回字典(d)中的键值对的数量

>>> city_code = {'suzhou': '', 'beijing': '', 'shanghai': '', 'tangshan': ''}
>>> len(city_code)
4

• d[key],返回字典(d)中的键(key)的值

>>> city_code["suzhou"]
''

• d[key]=value,将值(value)赋给字典(d)中的键(key)

>>> city_code = {'suzhou': '', 'beijing': '', 'shanghai': '', 'tangshan': ''}
>>> city_code["shenzhen"]=""
>>> city_code
{'suzhou': '', 'beijing': '', 'shanghai': '', 'tangshan': '', 'shenzhen': ''}

• del d[key],删除字典(d)的键(key)项(将该键值对删除)

>>> del city_code["shanghai"]
>>> city_code
{'suzhou': '', 'beijing': '', 'tangshan': '', 'shenzhen': ''}

• key in d,检查字典(d)中是否含有键为 key 的项

>>> "shenzhen" in city_code
True
>>> "sz" in city_code
False

字典也可以实现格式化字符

>>> city_code = {"suzhou":"", "tangshan":"", "hangzhou":""}
>>> " Suzhou is a beautiful city, its area code is %(suzhou)s" % city_code
' Suzhou is a beautiful city, its area code is 0512

 字典的常用操作方法:

copy

它与赋值的方式不一样,它会在内存中另辟了一个空间,但是需要注意的是:对于不是基础类型的,比如刚才字典的值是列表,Python 不会在被复制的那个对象
中重新存储,而是用引用的方式,指向原来的值。

>>> ad = {"name":"qiwsir", "lang":"Python"}
>>> cd = ad.copy()
>>> cd
{'lang': 'Python', 'name': 'qiwsir'}
>>> id(ad)
139736371470416
>>> id(cd)
139736371472376

与赋值的差别,id并没有改变

>>> ed=ad
>>> ed
{'lang': 'Python', 'name': 'qiwsir'}
>>> id(ed)
139736371470416

clear

清空字典中所有元素的操作

>>> ad = {"name":"qiwsir", "lang":"Python"}
>>> ad.clear()
>>> ad
{}

get

dict.get() 就是要得到字典中某个键的值

>>> ad = {"name":"sir", "lang":"Python"}
>>> ad.get("name")
'sir'

setdefault

首先,它要执行D.get(k,d) ,就跟前面一样了,然后,进一步执行另外一个操作,如果键k不在字典中,就在字典中增加这个键值对。当然,如果有就没有必要执行这一步了。

>>> ad = {"name":"sir"}
>>> ad.setdefault("lang","python")
'python'
>>> ad
{'lang': 'pytghon', 'name': 'sir'}
>>> ad.setdefault("name","python")
'sir'
>>> ad
{'lang': 'python', 'name': 'sir'}

 items

D.items() 能够得到一个关于字典的列表,列表中的元素是由字典中的键和值组成的元组

>>> d={"name":"Keven","age":""}
>>> d.items()
[('age', ''), ('name', 'Keven')]

iteritems

得到的是一个“迭代器”,这个迭代器是关于“D.items()”的,这种迭代器类型的数据不能直接输出,必须用list() 转换一下,才能看到里面的真面目。

>>> d={"name":"Keven","age":"","gender":"femal"}
>>> d_iter = d.iteritems()
>>> d_iter
<dictionary-itemiterator object at 0x7f085c980ba8>
>>> type(d_iter)
<type 'dictionary-itemiterator'>
>>> list(d_iter)
[('gender', 'femal'), ('age', ''), ('name', 'Keven')]

keys和value

>>> d={"name":"Keven","age":"","gender":"femal"}
>>> d.keys()
['gender', 'age', 'name']
>>> d.values()
['femal', '', 'Keven']

pop

根据key删除

>>> d={"name":"Keven","age":"","gender":"femal"}
>>> d.pop("name")
'Keven'
>>> d
{'gender': 'femal', 'age': ''}

popitem

D.popitem() 倒是跟list.pop() 有相似之处,不用写参数(list.pop 是可以不写参数),但是, D.popitem() 不是删除最后一个,dict 没有顺序,也就没有最后和最先了,它是随机删除一个,并将所删除的返回。

>>> d={"name":"Keven","age":"","gender":"femal"}
>>> d.popitem()
('gender', 'femal')
>>> d
{'age': '', 'name': 'Keven'}

update

把一个字典的值加入进来

>>> d1 = {"lang":"python"}
>>> d2 = {'age': '', 'name': 'Keven'}
>>> d1.update(d2)
>>> d1
{'lang': 'python', 'age': '', 'name': 'Keven'}

还可以用下面的方法更新:

>>> d1 = {"lang":"python"}
>>> d1.update([("name","Keven"),("age","")])
>>> d1
{'lang': 'python', 'age': '', 'name': 'Keven'}

has_key

判断字典中是否有某一个键值

>>> d={"name":"Keven","age":"","gender":"femal"}
>>> d.has_key("name")
True
>>> "name" in d
True

Python学习笔记6-字典的更多相关文章

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

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

  2. Python学习笔记之字典

    一.创建和使用字典 1.创建字典 phonebook={'Alice':'2341','Beth':'9102','Cecil':'3258'} 2.dict,通过映射创建字典 >>> ...

  3. 【Python学习笔记】字典操作

    字典dict是Python中唯一内置的映射类型,由键值对组成,字典是无序的.字典的键必须是不变对象,如字符串.数字.元组等,而包含可变对象的列表.字典和元组则不能作为键.这里可变和不可变的意思是指这个 ...

  4. Python学习笔记四--字典与集合

    字典是Python中唯一的映射类型.所谓映射即指该数据类型包含哈希值(key)和与之对应的值(value)的序列.字典是可变类型.字典中的数据是无序排列的. 4.1.1字典的创建及赋值 dict1={ ...

  5. python学习笔记八——字典的方法

    4.3.3 字典的方法 字典的常用方法可以极大地提高编程效率.keys()和values()分别返回字典的key列表和value列表.例: dict={"a":"appl ...

  6. python学习笔记七——字典

    4.3 字典结构 字典是Python中重要的数据类型,字典的由“键-值”对组成的集合,字典中的“值”通过“键”来引用. 4.3.1 字典的创建 字典由一系列的“键-值”(key-value)对组成,“ ...

  7. python学习笔记(字典乱码)

    博主总结下 python中字典中包含中文时,使用过程中出现乱码 json.dumps(params, encoding="UTF-8", ensure_ascii=False) p ...

  8. Python学习笔记3(字典)

    创建字典 dict函数 字典的格式化字符串 字典方法 clear copy fromkeys 序列是一个按照一定顺序将值进行组织的数据结构形式,可以通过索引对其进行征引.另外还有一种数据结构是通过名字 ...

  9. python学习笔记(6)——字典(Dictionary)

    dict= {key1 : value1, key2 : value2 ...} 关键词:字典中元素成对出现- key:value 格式- 两端{ } ,键:值,每对键值间用 ,隔开. 键key-唯一 ...

  10. python学习笔记(三)---字典

    字典 在Python中,字典 字典 是一系列键 键-值对 值对 .每个键 键 都与一个值相关联,你可以使用键来访问与之相关联的值.与键相关联的值可以是数字.字符串.列表乃至字典.事实上,可将 任何Py ...

随机推荐

  1. python-django 模型model字段类型说明

    V=models.CharField(max_length=None<, **options>) #varchar V=models.EmailField(<max_length=7 ...

  2. PHP和ajax详解

    优点:减轻服务器的负担,按需取数据,最大程度的减少冗余请求局部刷新页面,减少用户心理和实际的等待时间,带来更好的用户体验基于xml标准化,并被广泛支持,不需安装插件等进一步促进页面和数据的分离缺点:A ...

  3. Djnago的一些零碎知识点

    1.TEMPLATE_DIRS relative to the project folder http://stackoverflow.com/questions/9856683/using-pyth ...

  4. Python学习笔记-Day3-python函数

    1.为什么要用函数? 提高代码重复利用率,减少代码冗余.封装模块化代码,便于调用 2.函数声明定义(注意:函数先声明后调用) 注意:函数的reture循环中的exit功能一样(函数不执行,终止) 函数 ...

  5. JAVA基础知识之多线程——线程的生命周期(状态)

    线程有五个状态,分别是新建(New).就绪(Runnable).运行(Running).阻塞(Blocked)和死亡(Dead). 新建和就绪 程序使用new会新建一个线程,new出的对象跟普通对象一 ...

  6. github pages搭建个人网站如何添加导航

    折腾过github pages的同学都清楚使用jekyll搭建个人网站的目录结构,而导航最终的代码是在使用的主题目录中的default.html文件中的. 我的结构如下: . ├── .html ├─ ...

  7. Web应用程序状态管理(上)

    一:概述Http协议使用的是无状态连接:客户浏览器与服务器建立连接-发出请求-得到 响应-关闭连接.话句话说,连接只针对一个请求/响应.由于连接不会持久保留 所以容器认不出做第二个请求的客户与做前一个 ...

  8. Linux各发行版本简介

    简介 Linux 主要作为Linux发行版(通常被称为"distro")的一部分而使用.这些发行版由个人,松散组织的团队,以及商业机构和志愿者组织编写.它们通常包括了其他的系统软件 ...

  9. 安卓开发之json解析

    1.从网页获取json返回字符串 public class ReadNet extends AsyncTask<URL, Integer, String> { @Override      ...

  10. BZOJ 2566 xmastree(树分治+multiset)

    题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=2566 题意:一棵有边权的树.结点有颜色.每次修改一个点的颜色.求每次修改后所有同色 ...