Python学习笔记3(字典)

时间:2023-01-01 08:23:06

序列是一个按照一定顺序将值进行组织的数据结构形式,可以通过索引对其进行征引。另外还有一种数据结构是通过名字来引用值,这种数据结构成为映射(mapping)。字典是Python位移内建的映射。字典中的值并没有特殊的顺序,但是都储存在特定的键下。键可以是数字,字符串或者是元组。

创建字典

字典由多个键及对应的值构成了键-值组合(键-值对成为项)。每个键和值之间用冒号隔开,各项之间用逗号。字典用大括号。映射中,键是唯一的,但是不同的键可以对应相同的值。

>>> phonebook={'Alice':'0123','Smith':'1234','Mum':'1597','Dad':'1319'}
>>> phonebook['Mum']
'1597'

dict函数

dict函数可以利用其它映射或者(键,值)对来创建字典。dict也可以通过关键字参数来创建字典。另外还可以以映射作为参数,以创建项与映射相同的字典。

>>> items=[('name','Gumby'),('age',42)]
>>> d=dict(items)
>>> d
{'name': 'Gumby', 'age': 42}
>>> d['name']
'Gumby'

>>> d=dict(name='Gumy',age=42)
>>> d
{'name': 'Gumy', 'age': 42}

#### 字典的基本操作

字典的很多操作与序列相似:

  • Len(d)返回d中项的数量
  • d[k]返回关联到键k上的值
  • d[k]=v将值v关联到k键上
  • del d[k]删除键为k的项
  • k in d检查d中是否含有键为k的项。

尽管字典和序列有很多相似的地方,但是还是有一些重要的不同:

  • 键类型。键并不一定是整型数据,可以是任意的不可变类型,比如浮点型、字符串、元组等。
  • 自动添加。即使键起初不在字典中,也可以为他赋值,这是会自动创建新的项。
  • 成员资格。表达式k in d查找的是键而不是值。
  • 嵌套表达。字典的项(值是另一个字典)可以是另一个字典。
# 做一个简单的数据库
# 字典使用任命作为键。每个人用另一个字典来表示,其键为'phone'和'addr'分别表示他们的电话号码和地址
people = {
    'Alice':{'phone':'2341','addr':'Foo drive 23'},
    'Beth':{'phone':'1122','addr':'Bar street 22'},
    'Smith':{'phone':'2342','addr':'Foo drive 21'},
    'Mum':{'phone':'1000','addr':'Foo drive 20'},
    'Cecil':{'phone':'3241','addr':'Foo drive 19'},
    'Gumy':{'phone':'4231','addr':'Foo drive 35'},
}
# 针对电话号码和地址使用的描述性标签,会在打印输出的时候用到
labels ={'phone':'phone number','addr':'address'}
name=raw_input('Name: ')
# 查找电话号码还是地址?
request = raw_input('Phone number (p) or address (a)?')
# 使用正确的键
if request=='p':key='phone'
if request=='a':key='addr'
# 如果名字是字典中有效的键才打印信息
if name in people:input("%s's %s is %s.")%(name,labels[key],people[name][key])

字典的格式化字符串

在每个转换说明符中的%字符后面,可以加上键(用圆括号括起来),后面再跟上其他说明元素。当以这种方式使用字典时,只要所给的键在字典中可以找到,就可以使用任意数量的转换说明符。

template = '''<html>
<head><title>%(title)s</title></head>
<body>
<h1>%(title)s</h1>
<p>%(text)s</p>
</body>'''
data ={'title':'My Home Page','text':'Welcome to my home page!'}
print(template%data)

字典方法

就像其他的内建类型一样,字典也有方法。

clear

clear用来清除字典中的所有项。这是一个原地操作,所以没有返回值。

>>> d={}
>>> d['anme']='Gumy'
>>> d['age']='42'
>>> d
{'anme': 'Gumy', 'age': '42'}
>>> returned_value=d.clear()
>>> d
{}
>>> print(returned_value)
None
copy

copy方法返回一个具有相同键-值对应的新字典。(这个方法成为前复制shallow copy,因为值本身就是相同的,而不是副本。)当在副本中替换值得时候,原字典不受影响,但是如果修改了某个值,则原字典的值也会相应的被修改。在copy模块中还有一个方法deepcopy称为深复制。复制其包含的所有值。

>>> x={'username':'lihua','people':['foo','haha','nihao']}
>>> y=x.copy()
>>> y['username']='mlh'
>>> y['machines'].remove('haha')
Traceback (most recent call last):
  File "<pyshell#11>", line 1, in <module>
    y['machines'].remove('haha')
KeyError: 'machines'
>>> y['people'].remove('haha')
>>> y
{'people': ['foo', 'nihao'], 'username': 'mlh'}
>>> x
{'people': ['foo', 'nihao'], 'username': 'lihua'}
>>> from copy import deepcopy
>>> d={}
>>> d['names']=['Alfred','Bertrand']
>>> c=d.copy()
>>> dc=deepcopy(d)
>>> d['names'].append('Clive')
>>> c
{'names': ['Alfred', 'Bertrand', 'Clive']}
>>> dc
{'names': ['Alfred', 'Bertrand']}
fromkeys

fromekeys方法使用给定的键建立新的字典,每个键都对应一个默认的值None。如果不想使用none作为默认值,可以自己提供默认值。

Python学习笔记3(字典)的更多相关文章

  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,通过映射创建字典 >>&gt ...

  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学习笔记&lpar;6&rpar;——字典&lpar;Dictionary&rpar;

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

  9. python学习笔记&lpar;三&rpar;---字典

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

随机推荐

  1. &lbrack;Java 基础&rsqb;数组

    数组初始化 定义数组语法格式 定义数组有两种方式,如下两种格式是等价的: int[] a1; int a1[];  注:在C/C++中,不支持第一种格式.但是,推荐使用这种方式,因为这样似乎更合理,声 ...

  2. 命令行启动win7系统操作部分功能

    control.exe /name microsoft.folderoptions 启动资源管理器的 文件夹属性 选项卡 control.exe /name Microsoft.AddHardware ...

  3. Javax&period;mail&period;NoSuchProviderException&colon; smtp

    UT 这个错误是因为缺jar包 下载地址:在oralce下载一个 JavaMail 包 http://www.oracle.com/technetwork/java/javamail/index-13 ...

  4. 进程管理利器supervisor

    supervisor安装 方法一 1:用管理员安装python-setuptools suse zypper in python-setuptools centos yum install pytho ...

  5. webpack3新特性介绍

    6月20号webpack推出了3.0版本,官方也发布了公告.根据公告介绍,webpack团队将未来版本的改动聚焦在社区提出的功能需求,同时将保持一个快速.稳定的发布节奏.本文主要依据公告内容,简单介绍 ...

  6. SPFA 算法详解

    适用范围:给定的图存在负权边,这时类似Dijkstra等算法便没有了用武之地,而Bellman-Ford算法的复杂度又过高,SPFA算法便 派上用场了. 我们约定有向加权图G不存在负权回路,即最短路径 ...

  7. Cable master

    Problem Description Inhabitants of the Wonderland have decided to hold a regional programming contes ...

  8. Android远程桌面助手之功能简介

    外国友人录制的ARDC的使用简介,非常不错,介绍得很详尽.

  9. BZOJ 2728&colon; &lbrack;HNOI2012&rsqb;与非(位运算)

    题意 定义 NAND(与非)运算,其运算结果为真当且仅当两个输入的布尔值不全为真,也就是 A NAND B = NOT(A AND B) ,运算位数不会超过 \(k\) 位, 给你 \(n\) 个整数 ...

  10. 对JVM的简单了解