字典是一种可变的容器,可以存储任意类型的数据
字典中的每个数据都是用"键" (key) 进行索引,而不像序列可以用下标进行索引
字典中的数据没有先后关系,字典的存储是无序的
字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。key必须是不可变类型,如:数字、字符串、元组。
字典的表示方式是以{} 括起来,以冒号(:)分割的键值对,各键值对之间用逗号分隔开
字典的键一般是唯一的,如果重复最后的一个键值对会替换前面的
d = {} # 空字典
d = dict() # 空字典
dic1 = {'name': 'cgk', 'age': 20, 'sex': 'male'}
dic2 = dict((('name', 'cgk'),))
键一般是唯一的,如果重复最后的一个键值对会替换前面的
值可以取任何数据类型,但键必须是不可变的,如字符串、数字或元组。
#增
dic1 = {'name': 'cgk'}
dic1['age'] = '20'
print(dic1)
#键存在,不改动,返回字典中相对应的键对应的值
a = dic1.setdefault('age', 30)
print(a)
print(dic1)
#键不存在,在字典中增加新的键值对,并返回相应的值
b = dic1.setdefault('hobby', 'girl')
print(b)
print(dic1)
#查
dic4 = {'name': 'cgk', 'age': '20', 'hobby': 'girl'}
print(dic4['name']) #通过键查找
print(dic4.values()) #打印全部值
print(dic4.keys()) #打印全部键
print(dic4.items()) #打印全部键值对
# 打印全部键,转成列表形式
print(list(dic4.keys()))
dic4 = {'name': 'cgk', 'age': '20', 'hobby': 'girl'}
dic4['age'] = 30 #更新
dic4['school'] = '北大' #添加
print(dic4)
dic4 = {'name': 'cgk', 'age': '20', 'hobby': 'girl'}
dic5 = {1: "1", 'age': "30"}
dic4.update(dic5) #把dic5加进dic4里面,如果有重复的键,则覆盖
print(dic4)
#删
dic5 = {'name': 'cgk', 'age': '20', 'hobby': 'girl', 'school': '北大'}
del dic5['name'] #删除键是name的条目
print(dic5)
red = dic5.pop('hobby') #通过pop删除键是hoppy的条目,并返回删除的值
print(red)
print(dic5)
dic5.clear() #清空字典
print(dic5)
del dic5 #直接删除字典
清空字典只是晴空字典的所有内容,但字典还存在
del 字典 则是将字典全部删除,包括形式及内容
‘Mac’ 统一的字符串分别赋给前面三个!
[‘Mac’, ‘huawei’] 统一的列表分别赋给前面三个!
对字典 d 进行浅复制,返回一个和d有相同键值对的新字典
#嵌套
av_catalog = {
"欧美": {
"www.111.com": ["免费的,高清的", "质量一般"],
"www.222.com": ["免费的,清晰", "质量还行"],
"333.com": ["自拍,图片", "资源不多,更新慢"],
"444.com": ["质量很高,good", "收费,白嫖绕路"]
},
"日韩": {
"555.com": ["质量很差,不喜欢", "收费"]
},
"大陆": {
"666.com": ["免费,好人一生平安", "服务器在国外,慢"]
}
}
av_catalog["大陆"]["666.com"][1] += ",可以用爬虫爬下来" #修改
print(av_catalog["大陆"]["666.com"]) #['全部免费,真好,好人一生平安', '服务器在国外,慢,可以用爬虫爬下来']
返回一个有序的包含字典所有key的列表
dic = {5: '555', 2: '222', 4: '444'}
print(sorted(dic)) #默认根据键排序 [2, 4, 5]
print(sorted(dic.values())) #根据值排序 ['222', '444', '555']
print(sorted(dic.items())) #根据键排序 [(2, '222'), (4, '444'), (5, '555')]
dic = {'zhangsan': {'age': 11, 'sex': '男'},
'李四': {'age': 22, 'sex': '男'},
'wangwu': {'age': 33, 'sex': '女'}
}
#方法一:
for i in dic:
print(i) #默认遍历打印键
print(i, dic[i]) #打印键值对
#方法二:
for i in dic.items():
print(i) #打印键值对
for i, v in dic.items():
print(i, v) #打印键值对
方法&函数 | 描述/dic代表字典对象 |
---|---|
dic.clear() | 清空字典 |
dic.pop(key) | 移除键,同时返回此键所对应的值 |
dic…popitem() | 随机删除一组键值对,同时返回对应的值 |
dic.copy() | 返回字典dic的副本,只复制一层(浅拷贝) |
dic.update(dic1) | 将字典dic1合并到dic中,如果键相同,则此键的值取dic1的值作为新值 |
dic.get(key, default) | 返回键key所对应的值,如果没有此键则返回default |
dic.keys() | 返回可迭代的dict_keys集合对象 |
dic.values() | 返回可迭代的dict_values值对象 |
dic.items() | 返回可迭代的dict_items对象 |
cmp(dict1, dict2) | 比较两个字典元素 |
len(dict) | 计算字典元素个数,即键的总数 |
str(dict) | 输出字典可打印的字符串表示 |
type(variable) | 返回输入的变量类型,如果变量是字典就返回字典类型 |