字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值 key:value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示:
d = {key1 : value1, key2 : value2 }
删除字典元素:
#创建一个字典
tinydict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
del tinydict[Name] #删除的是Name的条目
tinydict clear()#清空字段内容 在次打印结果返回none
del tinydict #删除字段 在次打印字段 显示报错tinydict未定义
字典内置的函数&方法
1、比较两个字典元素
如果两个字典的元素相同返回0,如果字典dict1大于字典dict2返回1,如果字典dict1小于字典dict2返回-1。
dict1==dict2 返回0
dict1>dict2 返回1
dict1<dict2 返回-1
cmp(dict1, dict2) 用于比较两个字段的函数
2、len() 函数计算字典元素个数,即键的总数
len(dict)
3、删除字典内所有元素
dict.clear()
4、返回一个字典的浅复制
dict.copy()
dict1 = {'user':'runoob','num':[1,2,3]}
dict2 = dict1 # 浅拷贝: 引用对象
dict3 = dict1.copy() # 浅拷贝:深拷贝父对象(一级目录),子对象(二级目录)不拷贝,还是引用
# 修改 data 数据
dict1['user']='root'
dict1['num'].remove(1)
# 输出结果
print(dict1)
print(dict2)
print(dict3)
结果:
{'user': 'runoob', 'num': [1, 3]}
{'user': 'root', 'num': [1, 3]}
{'user': 'root', 'num': [1, 3]}
结论:当不使用copy的时候是浅拷贝
当使用copy函数的时候则第一级是深拷贝,二级数据还是浅拷贝的引用 所以当前数据进行删除1则3的字典数据都进行了相应的删除
5、字典(Dictionary) fromkeys()方法
list1=["w","1","a"]
dict1=dict.fromkeys(list1,10) #参数1 列表|元组 参数2 字典设置的value
print(dict1)
结果:
{'w': 10, '1': 10, 'a': 10}
6、 __contains__(key) 如果键在字典里返回true,否则返回false。
dict1={"name":"zhangsan","age":12}
print(dict1.__contains__("zhangsan"))
print(dict1.__contains__("name"))
结果:
false
true
7、字典(Dictionary) update()方法
字典(Dictionary) update() 函数把字典 dict2 的键/值对更新到 dict 里。
但是要注意的点是:当前数据中的key有和更新来的数据key一样,则会直接替换值,不会新增key.
tinydict = {'Name': 'Zara', 'Age': 7}
dict1={"name":"zhangsan","age":12}
dict1.update(tinydict)
print(dict1)
>>> a = {1: 2, 2: 2}
>>> b = {1: 1, 3: 3}
>>> b.update(a)
>>> print b
{1: 2, 2: 2, 3: 3}
8、 字典 pop() 方法删除字典给定键 key 所对应的值,返回值为被删除的值。
pop(key[,default])
参数
- key - 要删除的键
- default - 当键 key 不存在时返回的值
site= {'name': '教程', 'alexa': 10000, 'url': 'www.runoob.com'}
element = site.pop('name')
print('删除的元素为:')
print(element)
print('字典为:')
print(site)
结果:
删除的元素为:
菜鸟教程
字典为:
{'url': 'www.runoob.com', 'alexa': 10000}
8、popitem()
返回并删除字典中的最后一对键和值。