今天开始学习字典。
字典是python唯一的内置映射,分为键和值,“键-值”成为项,键和值用冒号分隔,例如:
name={"tom":"88888","mary":"666666"}
可以使用函数dict(dict和str,list,tuple一样,实际上是一个类)从其他映射(例如其他字典)或键-值对创建字典。
name={"tom":"88888","mary":"666666"} d=dict(name) print(d) print(d["tom"])#调用某个键值 i=[("name","age"),("tom","18")]#这是一个键-值对 d=dict(i) print(d) d=dict(name="tom",age="18")#使用关键字实参创建 print(d) print(d["name"])
基本操作如下:
len(d) | 返回键-值对数 |
d[k] | 返回键k对应的值 |
d[k]=v | 将v关联至k |
del d[k] | 删除键k对应的值 |
k in d | 检查字典d中是否有键为k的项 |
字典的键可以是任何不可变的类型。在列表中,我们不能给不存在的元素赋值(需要使用attend添加),但字典会自动创建一个新项。
字典中的k in d(d是字典)查找的是键,v in l(l是列表)查找的是值而不是索引,这里容易记混。
字典可以进行嵌套:
name={ "tom":{ "phone":"88888", "gender":"male"}, "mary":{ "phone":"66666", "gender":"female"} } n=input("input the name:" ) print(name[n]["phone"])
我们也可以使用format_map将字符串格式设置功能用于字典:
a={"tom":"8888","mary":"6666"} print("his number is {tom}".format_map(a))
在web开发中,format_map十分有用,可以用来替换html模板中的参数。
下面是字典方法:
clear | 清空字典 |
copy | 浅复制字典,相当于指针指向,复制件改变时,原件也会改变 |
deepcopy | 深复制,相当于dict |
fromkeys(“t1″,”t2″,”none”) | 使用以上键创建一个新字典,值不填默认为none |
get | 访问不存在的项不会报错而输出none,例如:d.get(“name”) |
items | 返回一个包含字典所有项的列表,值为(key,val)格式,排序不确定(此法详细讲解见下)。 |
keys | 返回一个字典视图,其中包含指定字典中的键。 |
pop | 返回一个与指定键对应的值,并将该键-值对删除 |
popitem | 类似list.pop,但list.pop弹出最后一个元素,popitem随机弹出一个元素。 |
setdefault | 类似get,不过会在指定的键不存在时添加键-值对(值默认None,但可以指定)。 |
update | 使用一个字典中的项更新另外一个字典。对于通过参数提供的字典,将其项添加到当前字典中,如果包含相同的项,就替换它。也可以像dict那样,提供一个映射或键值序列(或其他可迭代对象)。 |
values | 返回由字典的值组成的字典视图,不同于keys,value可能包含重复的值。 |
item的返回值为字典视图,字典视图可用于迭代,可以确定其长度或进行资格检查。字典视图是对底层字典的反应,原字典修改时,字典视图也随着修改。如果不想如此的话可以将它使用list转换为列表(老版本的item直接转换为列表)。